为什么80%的码农都做不了架构师?>>>   

#include <stdio.h>
#include <stdlib.h>
#define ElemType int
#define Status int
#define OK 1
#define ERROR 0typedef struct List
{ElemType data;struct List *next;
}linklist;//定义结构类型Status CreateList(linklist *L)
{printf("\nPlease input the linklist end with 0:\n");linklist *p,*r;L->next=NULL;r=L;p=(linklist *)malloc(sizeof(linklist));if(!p)return ERROR;scanf("%d",&p->data);while(p->data!=0){p->next=NULL;r->next=p;r=p;p=(linklist *)malloc(sizeof(linklist));scanf("%d",&p->data);}return OK;
}//尾插法创建一个升序单链表Status display(linklist *L)
{linklist *p;p=L->next;printf("%d",p->data);p=p->next;while(p){printf("->%d",p->data);p=p->next;}printf("\n");return OK;
}//显示单链表Status reverse(linklist *L)
{linklist *p,*q,*u;p=L->next;if(p==NULL)return ERROR;q=L->next->next;p->next=NULL;while(q){u=q->next;p->next=u;q->next=L->next;L->next=q;q=u;}return OK;
}//单链表逆置Status listinsert(linklist *L, ElemType e)
{linklist *pre,*p,*s;pre=L;p=L->next;while(p&&p->data<e){pre=p;p=p->next;}s=(linklist *)malloc(sizeof(linklist));s->data=e;s->next=p;pre->next=s;return OK;
}//单链表中插入一个元素之后仍然有序linklist *MergeList(linklist *La,linklist *Lb )
{linklist *Lc;linklist *pa,*pb,*pc;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;return Lc;//返回合并后链表的头指针
}//合并单链表void listdel(linklist *L,ElemType e)
{linklist *p,*q;p=L->next;q=L;while(p){if(e==p->data){q->next=p->next;p=p->next;}else{p=p->next;q=q->next;}}
}//单链表的删除操作void delete_A(linklist *B,linklist *C)
{linklist *A=(linklist *)malloc(sizeof(linklist));printf("\nCreate the increasing list A:\n");CreateList(A);ElemType del[100];int i=0,j;linklist *p,*q;p=B->next;q=C->next;while(p&&q){if(p->data!=q->data)p=p->next;else{del[i]=p->data;p=p->next;q=q->next;i++;}}j=i;for(i=0;i<=j;i++){listdel(A,del[i]);}printf("\nThe new A is:\n");display(A);
}//删除A中B&C相同的元素int main(void)
{int choice;ElemType e;linklist *L=(linklist *)malloc(sizeof(linklist));linklist *La=(linklist *)malloc(sizeof(linklist));linklist *Lb=(linklist *)malloc(sizeof(linklist));linklist *Lc;linklist *B=(linklist *)malloc(sizeof(linklist));linklist *C=(linklist *)malloc(sizeof(linklist));do{printf("\n********************************\n");printf("1.Create a linklist orderly\n");printf("2.Display the linklist\n");printf("3.Insert a element\n");printf("4.Delet a element from L\n");printf("5.Reverse the linklist\n");printf("6.Merge&Reverse two linklist\n");printf("7.Delet the same element which appears in B&C from A \n");printf("0.Exit\n");printf("\n\n Press a key for your choice:\n");scanf("%d",&choice);switch(choice){case 1:CreateList(L);printf("\nThe linklist L has been created successfully!\n");getchar();getchar();break;case 2:printf("\nThe linklist L is:\n");display(L);getchar();getchar();break;case 3:printf("\nPlease input the element you want to insert:\n");scanf("%d",&e);listinsert(L,e);display(L);getchar();getchar();break;case 4:printf("\nPlease input the element you want to delete:\n");scanf("%d",&e);listdel(L,e);printf("\nThe list after delet is :\n");display(L);getchar();getchar();break;case 5:reverse(L);printf("\nThe list after reverse is :\n");display(L);getchar();getchar();break;case 6:printf("\nCreate the list la:\n");CreateList(La);printf("\nCreate the list lb:\n");CreateList(Lb);printf("The list after merge is :\n");Lc=MergeList(La,Lb);reverse(Lc);display(Lc);getchar();getchar();break;case 7:printf("\nCreate the increasing list B:\n");CreateList(B);printf("\nCreate the increasing list C:\n");CreateList(C);delete_A(B,C);getchar();getchar();break;}}while(choice!=0);}

1:关于case7:

输入不同数据结果不太一样,有时候对有时候不对,debug也没有查出来为什么。

求解答啊啊 啊啊啊。

转载于:https://my.oschina.net/hfancy/blog/645729

数据结构(单链表的相关操作)相关推荐

  1. 数据结构单链表的基础操作(C语言)

    效果如图: 代码及详情如下:(文末总结) 目录 //主函数 //菜单 //创建链表 //插入结点 //删除结点 //查找结点 //链表长度 //打印链表 //清空链表 //逆置链表 //删除偶数元素结 ...

  2. 数据结构单链表插入和删除操作

    单链表:先回顾单链表的特点  逻辑相邻 物理上不一定相连 首先初始化单链表,其中主要保存的是该节点自身的值以及下个节点的地址. 有效节点结构体设计: ​ struct Node{ ​ int data ...

  3. 数据结构单链表的创建以及简单操作

    在数据结构中: 目录 一.数据节点类型结构体封装 二.创建单链表 1.创建链表 2.头部插入 3.遍历链表 4.尾部插入 5.释放链表 链表可以解决顺序表无法开辟连续空间的问题,大大提高了内存的利用率 ...

  4. 笔试面试常考数据结构-单链表常用操作编程实现

    单链表是笔试以及面试手写代码中常考的数据结构之一.下面实现了单链表的常见操作:创建单链表.删除节点.打印单链表(包括正向打印以及逆向打印).反转单链表.找出单链表的倒数第K个节点.合并两个有序单链表等 ...

  5. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  6. 单链表的简单操作与演示

    单链表的简单操作与演示 单链表 单链表概念和简单的设计 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点由元素和指针构成. 元素表示数据元素的映象,就是存储数据的存储单元:指针指 ...

  7. C语言数据结构单链表链表

    数据结构–单链表 学习了顺序表,我们发现顺序表在向里面存放数据的时候很麻烦,比如我们要使用头插法存放一个数据到顺序表的时候,我们要将整个表都向后挪一位,这个操作就让人很难受.那么有没有一种结构可以让我 ...

  8. 数据结构 - 单链表

    文章目录 一.单链表 1.单链表的定义 1.1概念介绍 2.如何用代码来定义一个单链表 *知识点 3.单链表的插入删除 未完待续... 一.单链表 1.单链表的定义 单链表是一种链式存取的数据结构,用 ...

  9. 数据结构——单链表(小白入门第二天)

    一.什么是单链表? 定义:每个结点 除了存放数据元素外,还要存储指向下一个节点的指针: 优点:不要求大片连续空间,改变容量方便: 缺点:不可随机存取,要耗费一定空间存放指针 局限性:无法逆向检索 二. ...

最新文章

  1. 数据导出为Excel(未完)
  2. Spring第二讲--利用组件注解符精简Spring配置文件
  3. ASP.NET MVC随想录——创建自定义的Middleware中间件
  4. 【转】用户十秒离开你网站的25个原因
  5. 防火墙设置导致服务器站点打开,服务器、网站、环境配置全正常网站打不开原来是系统防火墙造成的...
  6. c语言编程常见问题解答,C语言编程常见问题解答之常用函数的包含文件
  7. Oracle笔记:用户、权限及exp/imp数据
  8. [ZT]ASP.NET中如何防范SQL注入式攻击
  9. ffmpeg转码测试命令
  10. 专利局文件如何删除后面的注意事项
  11. 如何在UEFI模式下安装Linux,详解 UEFI 模式下安装 Linux
  12. 总以为猜对了结局,但烧脑推理电影却总是让我扭伤腰
  13. MySQL的binLog、redoLog、undoLog是什么?
  14. 以太网/串口连接开发板
  15. 华为物理服务器显示000,服务器故障解决办法
  16. HP V3500简要拆机流程
  17. 北京最大废品集散地面临拆迁 曾登上时代周刊
  18. 页面图片轮播完整代码
  19. 专门用于管理企业与自己客户之间所有信息的客户管理系统
  20. 倒计时(Jquery插件)

热门文章

  1. 面向对象设计原则-Principles and Patterns读书笔记三
  2. BZOJ4205卡牌配对——最大流+建图优化
  3. android 面试题(一)
  4. 10.4 使用instanceof操作符判断对象类型
  5. PHP常用方法很有意义的博客网址
  6. 过年了,是不是应该写点代码祝福别人
  7. 团队-游戏《石头,剪刀,布》-团队一阶段互评
  8. 个人或者企业怎么进行app开发?开发一款APP应用大概须要多少钱?
  9. Openwrt中luci配置页面cbi小记
  10. jQuery和Prototype兼容问题