C语言怎么建立链表并实现增删查改

  介绍

这篇文章给大家分享的是有关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   null

C语言怎么建立链表并实现增删查改