C语言如何建立链表并实现增删查改详解
前言
以下是本人完成的一个C语言建立链表并进行增删查改操作的程序,为方便学习,本人将整个程序分为头文件和主函数两部分:
1.头文件(函数部分)
(1)初始化函数
#include#include typedefstruct{ int*head; intlength; intcapacity; }Toslist;//Toslist类型 //初始化顺序表 ToslistinitSeqlist(){ Toslistlist; list.length=0; list.capacity=5; list.head=(int*)malloc(10*sizeof(int)); if(!list.head) { printf("初始化失败!\n"); exit(0); } returnlist; }
(2)打印函数
//打印顺序表 voiddisplayList(Toslistlist){ for(inti=0;i(3)插入函数
//插入元素 Toslistadd(Toslistlist,intelem,intpos){ if(list.length==list.capacity){ int*temp=(int*)realloc(list.head,(list.capacity+1)*sizeof(int));//判断空间是否足够,不够就另建链表 //不直接用head而引入temp的作用:防止空间分配失败导致head失去原来的链表 if(!temp){ list.head=temp; list.capacity+=1; } } //插入位置及以后的元素后移 for(inti=list.length-1;i>=pos;i--){ list.head[i+1]=list.head[i]; } list.head[pos]=elem; list.length++; returnlist; if(pos>list.length||pos<0) printf("插入位置错误!\n"); returnlist; }(4)删除函数
//删除元素 Toslistdelete(Toslistlist,intpos){ for(inti=pos;ilist.length){ printf("删除位置有误!\n"); returnlist; } } (5)查找函数
//查 intsearch(Toslistlist,intelem){//elem是查找的元素 //顺序查找 for(inti=0;i(6)替换函数
//改 Toslistmodify(Toslistlist,intelem,intval){//val是要替换它的元素 intpos=search(list,elem);//获取要替换元素的位置 list.head[pos]=val; returnlist; }2.主函数
intmain(){ Toslistlist=initSeqlist(); intAddpos=-1,Addnum,Delpos,Serachnum,Modifynum; printf("请输入5个整数元素\n"); for(inti=0;i<5;i++){ scanf("%d",&list.head[i]); list.length++; } printf("顺序表中的元素有:\n"); displayList(list); //插入元素 printf("要在哪个元素后插入元素?\n"); while(Addpos<0||Addpos>list.length){ scanf("%d",&Addpos); if(Addpos<0||Addpos>list.length) printf("请输入正确的位置!\n"); }; printf("请输入需要插入的元素:\n");scanf("%d",&Addnum); printf("在顺序表的第%d个元素后插入元素%d得到\n",Addpos,Addnum); list=add(list,Addnum,Addpos); displayList(list); //删除元素 printf("要删除顺序表下标顺序中哪个元素?\n");scanf("%d",&Delpos); printf("删除后得到:\n"); list=delete(list,Delpos); displayList(list); //查找 printf("请输入需要查找的元素\n");scanf("%d",&Serachnum); intpos=search(list,Serachnum); if(pos) printf("元素%d的位置为第%d个\n",Serachnum,pos+1); if(!pos){ printf("表中无该元素\n"); } //修改 printf("请输入需要修改的元素:\n");scanf("%d",&Serachnum); printf("请输入要替换的数:\n");scanf("%d",&Modifynum); printf("将%d修改为%d得到:\n",Serachnum,Modifynum); list=modify(list,Serachnum,Modifynum); displayList(list); free(list.head); list.head=NULL; return0; }以上程序本人已调试完毕,若程序有繁杂之处,欢迎批评指正!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。