zoukankan      html  css  js  c++  java
  • 【数据结构】链式线性表的几种常用用法

    #include <stdio.h>
    #include <stdlib.h>
    
    #define maxsize 1024
    #define OK 1
    #define ERROR 0
    
    typedef struct LNode
    {
        int data;
        struct LNode *next;
    }LNode;
    
    //声明函数
    void out_l(LNode *l);    //输出线性表
    LNode *create_l();        //创建线性表
    void insert_l(LNode *l);    //插入元素
    void delete_l(LNode *l);        //删除元素
    int search_l(LNode *l);            //按值查找元素
    
    
    void main()
    {
        int i;
        LNode *l;
        l = create_l();        //创建链式链表
        out_l(l);            //输出链表
        //insert_l(l);        //插入元素
        //out_l(l);            //输出链表
        //delete_l(l);    //删除元素    
        //out_l(l);            //输出链表
        i = search_l(l);    //按值查找元素的位置
        if(i == -1)
        {
            printf("输入的元素不存在!");
        }
        else
        {
            printf("元素的位置为:%d",i);
        }
    }
    
    //按值查找元素
    int search_l(LNode *l)
    {
        int x,i,j;
        LNode *h,*p;
        i = 0;
        printf("请输入查找的元素:");
        scanf("%d",&x);
        h = l;
        while(h != NULL && h->data != x)
        {
            h = h->next;
            i++;
        }
        if(h != NULL) return(i);
        else return(-1);
    }
    
    //删除元素
    void delete_l(LNode *l)
    {
        int i,j;
        LNode *p,*h;
        j=0;        //j=0必须放在LNode *p,*h;语句的后面,如果放到前面会报错,不知道是什么原因    
        printf("请输入删除元素的位置:");
        scanf("%d",&i);
        h = l;
        while(h != NULL && j < i - 1)
        {
            h = h->next;
            j++;
        }
        if(h == NULL || j > i - 1)
        {
            printf("输入的位置有问题!");
        }
        else
        {
            h->next = h->next->next;
        }
    
    }
    
    //插入元素
    void insert_l(LNode *l)
    {
        int i,j,x;
        LNode *p,*h;
        j = 0;
        h = l;
        printf("请输入插入的位置:\n");
        scanf("%d",&i);
        printf("请输入插入的元素:\n");
        scanf("%d",&x);
        while(h != NULL && j < i - 1)
        {
            h = h->next;
            j++;
        }
        if(h == NULL || j > i -1)
        {
            printf("输入的位置有误!");
        }
        else
        {
            p = (LNode *)malloc(sizeof(LNode));
            p->data = x;
            p->next = h->next;
            h->next = p;
        }
        
    }
    
    //创建链式线性表
    LNode *create_l()        //返回的是指针类型的所以要用到*
    {
        LNode *h,*p,*l,*w;
        int x;
        h = (LNode *)malloc(sizeof(LNode));
        h->next = NULL;
        p = h;
        printf("请输入创建的值:");
        scanf("%d",&x);
        while(x != -222)
        {
            l = (LNode *)malloc(sizeof(LNode));
            l->data = x;
            l->next = NULL;
            p->next = l;
            p = l;
            printf("输入-222结束,其他则继续创建线性表;");
            scanf("%d",&x);
        }
        return(h);
    }
    
    //输出链式线性表的值
    void out_l(LNode *l)
    {
        LNode *p;
        p = l;
        p = p->next;        //由于第一个节点是头结点不存数据时空的,所以要指向下一个节点才会有数据
        while(p != NULL)
        {
            printf("%5d",p->data);
            p = p->next;
        }
    }

    直接贴代码了,没什么技术含量;

  • 相关阅读:
    攻城狮在路上(壹) Hibernate(五)--- 映射一对多关联关系
    攻城狮在路上(壹) Hibernate(四)--- 对象标识符(OID)生成机制
    SQL常用方言列表
    maven 依赖查询
    攻城狮在路上(壹) Hibernate(三)--- 属性访问、命名策略、派生属性、指定包名等
    攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序
    《精通Hibernate:Java对象持久化技术详解》目录
    攻城狮在路上(壹) Hibernate(一)--- 软件环境、参考书目等一览表
    <转>Hibernate的优、缺点(局限性)
    攻城狮在路上(零)开篇
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/2697648.html
Copyright © 2011-2022 走看看