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;
        }
    }

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

  • 相关阅读:
    《Go并发编程实战》读书笔记-初识Go语言
    使用Nexus配置Maven私有仓库
    Maven 本地资源库配置
    Django 2.2.x版本的ORM API实战案例
    在Mac OS环境下安装MySQL服务
    Pycharm搭建Django开发环境
    Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署
    Ambari集成Kerberos报错汇总
    Hadoop生态圈-开启Ambari的Kerberos安全选项
    Hortonworks官网文档怎么找?
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/2697648.html
Copyright © 2011-2022 走看看