开发者社区> 问答> 正文

数据结构与算法 编写程序 建立单链表,插入,删除,查找,输出,怎么编?

数据结构与算法 编写程序 建立单链表,插入,删除,查找,输出,怎么编?

展开
收起
知与谁同 2018-07-19 15:07:45 2095 0
1 条回答
写回答
取消 提交回答
  • 杀人者,打虎武松也。
    typedef int Elemtype;

    typedef int status;

    #define OVERFLOW -2

    #define OK 1

    #define ERROR -1

    #include "stdio.h"

    #include "stdlib.h"

    typedef struct LNode {

    Elemtype data;

    struct LNode *next;

    }*linklist;

    //构造链表

    void Create_Linklist(linklist &L)
    {
    linklist p;
    p=(linklist)malloc(sizeof(LNode));
    if(!p)
    exit(OVERFLOW);
    L=p;
    L->next =NULL;
    }

    //节点插入
    void Insert_Linklist(linklist &L)
    {
    linklist p;
    int n,i;
    printf("请输入插入节点的个数n: ");
    scanf("%d",&n);
    getchar();
    for(i=n;i>0;i--)
    {
    p=(linklist )malloc(sizeof(LNode));
    scanf("%d",&p->data);
    p->next=L->next ;
    L->next =p;
    }
    }

    //遍历输出并输出长度
    status Visit_linklist(linklist &L)
    {
    linklist p;
    int i=1;
    p=L->next ;
    if(L->next==NULL)
    return ERROR;
    while(p->next !=NULL)
    {
    printf("%d ",p->data );
    p=p->next ;
    i++;
    }
    printf("%d\n",p->data );
    printf("长度为:%d\n",i);
    return OK;
    }

    //查找值为x的直接前驱结点q并输出
    void Search_linklist(linklist &L)
    {
    int x,k=0;
    linklist p=L,q;
    printf("输入x: ");
    scanf("%d",&x);
    getchar();
    if(L->next ==NULL)
    printf("该表为空 。\n");
    while(p->next!=NULL)
    {
    q=p;
    if(p->next ->data ==x)
    {
    printf("%d ",q->data );
    k=1;
    }
    p=p->next ;
    }
    if(p->next &&p->data ==x)
    {
    printf("%d ",p->data );
    k=1;
    }
    2019-07-17 22:54:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载