介绍
这篇文章给大家分享的是有关C语言怎么建立链表并实现增删查改的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
C语言建立链表并进行增删查改操作的程序,为方便学习,小编将整个程序分为头文件和主函数两部分:
<强> 1。头文件(函数部分)强>
(1)初始化函数
# include & lt; stdio.h> # include & lt; stdlib.h> typedef struct  { ,int *头; ,int 长度; ,int 能力; },Toslist;,//Toslist类型//初始化顺序表 Toslist initSeqlist (), { ,Toslist 列表;=,list.length 0; ,list.capacity =, 5;=,list.head (int *) malloc (10, *, sizeof (int)); ,if (list.head !) ,{ ,printf(“初始化失败! \ n"); ,退出(0); ,} ,return 列表; }
(2)打印函数
//打印顺序表 void displayList (Toslist 列表),{ ,for (int 小姐:=,0;,小姐:& lt;, list.length;,我+ +),{ ,printf (“% d “, list.head[我]); ,} ,printf (“\ n"); }
(3)插入函数
//插入元素 列表,Toslist 添加(Toslist int elem, int pos), { ,if (list.length ==, list.capacity), { ,int * temp =, (int *) realloc (list.head,,(时间+ list.capacity 1), *, sizeof (int));//判断空间是否足够,不够就另建链表//不直接用头而引入临时的作用:防止空间分配失败导致头失去原来的链表 ,if (临时),{ 时间=list.head 才能;温度; list.capacity 才能+=,1; ,} ,} ,//插入位置及以后的元素后移 ,for (int 小姐:=,list.length 作用;1;,小姐:祝辞=,pos;,我——),{ ,list.head(小姐:+,- 1),=,list.head[我]; ,} ,list.head (pos),=, elem; ,list.length + +; ,return 列表; ,if (pos 祝辞,list.length | |, pos & lt;, 0) ,printf(“插入位置错误! \ n"); ,return 列表; }
(4)删除函数
//删除元素 列表,Toslist 删除(Toslist int pos), { ,for (int 小姐:=,pos;,小姐:& lt;, list.length 作用;1;,我+ +),{ ,list.head[我],=,list.head[小姐:+,- 1]; ,} ,list.length——; ,return 列表; ,if (pos & lt;, 0, | |, pos 祝辞,list.length), { ,printf(“删除位置有误! \ n"); ,return 列表; ,} }
(5)查找函数
//查 列表,int 搜索(Toslist int elem), {,//elem是查找的元素 ,//顺序查找 ,for (int 小姐:=,0;,小姐:& lt;, list.length;,我+ +),{ ,if (elem ==, list.head[我]),{ return 才能;我; ,} ,} ,return 0; }
(6)替换函数
//改 列表,Toslist 修改(Toslist int elem, int val),{,//瓦尔是要替换它的元素 ,int pos =,搜索(列表,elem);,//获取要替换元素的位置 ,list.head (pos),=, val; ,return 列表; }
<强> 2。主函数强>
int 主要(),{ ,Toslist list =, initSeqlist (); ,int Addpos =, 1,,,, Addnum Delpos,, Serachnum, Modifynum; ,printf(“请输入5个整数元素\ n"); ,for (int 小姐:=,0;,小姐:& lt;, 5;,我+ +),{ ,scanf (“% d",,, list.head[我]); ,list.length + +; ,} ,printf(“顺序表中的元素有:\ n"); ,displayList(列表); ,//插入元素 ,printf(“要在哪个元素后插入元素? \ n"); ,while (Addpos & lt;, 0, | |, Addpos 祝辞,list.length), { ,scanf (“% d",,, Addpos); ,if (Addpos & lt;, 0, | |, Addpos 祝辞,list.length) ,,printf(“请输入正确的位置! \ n"); ,}; ,printf(“请输入需要插入的元素:\ n");, scanf (“% d",,, Addnum); ,printf(“在顺序表的第% d个元素后插入元素% d得到\ n",, Addpos,, Addnum);=,list add (Addnum,列表,还以为;Addpos); ,displayList(列表); ,//删除元素 ,printf(“要删除顺序表下标顺序中哪个元素? \ n");, scanf (“% d",,, Delpos); ,printf(“删除后得到:\ n");=,list 删除(列表,,Delpos); ,displayList(列表); ,//查找 ,printf(“请输入需要查找的元素\ n");, scanf (“% d",,, Serachnum); ,int pos =,搜索(列表,Serachnum); ,如果(pos) ,printf(“元素% d的位置为第% d个\ n",, Serachnum,, pos + 1); ,如果(pos) { ,printf(“表中无该元素\ n"); ,} ,//修改 ,printf(“请输入需要修改的元素:\ n"); scanf (“% d",, Serachnum); ,printf(“请输入要替换的数:\ n"); scanf (“% d",, Modifynum); ,printf(“将% d修改为% d得到:\ n",, Serachnum,, Modifynum);=,list 修改(Serachnum,列表,还以为;Modifynum); ,displayList(列表); ,免费(list.head); null null null nullC语言怎么建立链表并实现增删查改