问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编程:创建一个链表 并在该链表的任意位置实现添加和删除的功能,要求在同一个程序中完成!

发布网友 发布时间:2022-05-01 03:23

我来回答

1个回答

热心网友 时间:2023-10-03 05:05

以前给别人做的一个链表,给你用功能富裕了你看看吧:
#include
"stdio.h"
struct
Node
{

Node
*pNext;

int
value;
}*pTop;
struct
Node*
Insert(struct
Node
*pNode,int
Num);
void
Del(struct
Node
*pDelNode);
struct
Node*
Search(struct
Node
*pNode,int
Num);
void
main()
{

pTop=NULL;

int
i,k,x,y;

struct
Node
*pCurrentNode,*pTempNode;

/*(1)建立带表头结点的单链表;*/

for(i=0;i<30;i++)
Insert(NULL,i);/*建立一个有30个结点的链表*/

/*(2)输出单链表中所有结点的数据域值;*/

pCurrentNode=pTop;

while(pCurrentNode!=NULL)

{

printf("%d->",pCurrentNode->value);/*遍历这个链表并输出其各结点的数据域*/

pCurrentNode=pCurrentNode->pNext;

}

/*(3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插入结点y;*/

printf("Input
x,y");

scanf("%d,%d",&x,&y);

pCurrentNode=Search(NULL,x);

Insert(pCurrentNode,y);

/*(4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。
*/

printf("Input
k");

scanf("%d",&k);

pCurrentNode=pTop;

i=0;

while(1)

{

pTempNode=Search(pCurrentNode,x);

if(pTempNode!=NULL)

{

pCurrentNode=pTempNode->pNext;

Del(pTempNode);

i++;

}

else
break;

}

printf("%d
Nodes
was
deleted",i);

pTempNode=pTop;

while(pTop!=NULL)

{

pTop=pTempNode->pNext;

delete
pTempNode;

}
}
Node*
Insert(struct
Node
*pNode,int
Num)
{

struct
Node
*pNewNode;

pNewNode=new
Node;

pNewNode->value=Num;

if(pNode==NULL)/*无确定插入位置时将结点放在链表最后*/

{

if(pTop!=NULL)/*确定链表是否是空表*/

{

pNode=pTop;

while(pNode->pNext!=NULL)
pNode=pNode->pNext;/*找到尾结点*/

pNode->pNext=pNewNode;

}

else

{

pTop=pNewNode;

}

pNewNode->pNext=NULL;

}

else/*有确定插入位置时将结点放在指定结点之后*/

{

pNewNode->pNext=pNode->pNext;

pNode->pNext=pNewNode;

}

return
pNewNode;
}
void
Del(struct
Node
*pDelNode)
{

if(pDelNode==NULL
||
pTop==NULL)
return;/*防错处理*/

struct
Node
*pNode;

pNode=pTop;

while(pNode!=NULL
&&
pNode->pNext!=pDelNode)
pNode=pNode->pNext;/*找到指定结点的前导结点*/

if(pNode!=NULL)

{

pNode->pNext=pDelNode->pNext;

delete
pDelNode;

}
}
struct
Node*
Search(struct
Node
*pNode,int
Num)
{

struct
Node
*pSeaNode;

if(pNode==NULL)
pSeaNode=pTop;/*不指定搜索的起始位置,从表头开始*/

else
pSeaNode=pNode;/*指定了搜索的起始位置,从指定位置开始*/

while(pSeaNode!=NULL
&&
pSeaNode->value!=Num)
pSeaNode=pSeaNode->pNext;

return
pSeaNode;/*没有找到结点时返回空指针*/
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么项目要求一级建造师 二级建造师承建了隧道机电工程3600万违规吗 钱湖宫福址地址在哪里? 玄福堂地址在哪里? 中华福2021哪里可以买? 福园地址在哪里? 中华第一福地址在哪里? 在燃烧匙内盛过量红磷点燃后放入集气瓶内塞紧橡皮塞侍红磷灭后集气瓶冷... ...设计了如图1如示的实验方案:在燃烧匙内盛过量红磷 ...甲同学设计了如图1如示的实验方案:在燃烧匙内盛过量红磷,点... 用C语言编程(创建一个单向链表) 谁能教我如何打印PDF小册子,也就是32开书本。 远距离能拍摄录像和录音的设备叫什么名字? 便携式同步录音录像设备 求穿越火线有意义有内涵的战队名字 施工进度计划内容包括哪些 专门用于录音录像的器械是什么 请问有带录音功能的摄像头吗?长得什么样(请上图)? 帮我想个LOL战队名字例如IG WE 等战队这样的缩写,有内涵的 谁给帮忙设计个战队名字?要有★,且比较简洁,战队名要有杀气,一往无前的气势! 好听的战队名字!要有内涵,比如WE是世界精英,OMG=Oh!My God! …… 求CF战队名字, 一定要有内涵,而且战队名得是这种格式的, 丶浮生乱流年 丶寂寞舞红颜, 绝对高分 一个PDF文件,可以一页打多页,也可以打印小册子,但我既要多页,也要成册,怎么设置? 我准备建立一个战队,战队名字叫什么比较有内涵 有含义的战队名字 战队内涵高端的名字有哪些? 朋友微信审核给我发了串数字让我发他上是什么意思? 杞维康枸杞原浆适合什么人喝? 我的经期一直不规律,前天我妈妈给我买了枸杞原浆要我喝,有用吗? 月经期间能不能喝枸杞原浆? 怎样制定施工进度计划? 施工进度计划措施具体内容有哪些? c语言链表应用编程,急求!! 交通警察执法时,一定要配戴录音录像设备吗? c语言程序课程设计,链表,求助 即可以录像又可以录音的电脑工具 施工进度计划的表示方法有什么? 中通快递萧山区二部是在哪里? C语言程序设计 链表的综合操作(急) 慈禧寝宫中的哪件压箱宝贝,让朱先生连说好几声:很难得? 单反相机拍录像,录音用什么设备好 c语言程序设计 使用链表 学生管理系统 急!谁知道中通快递能不能到杭州市萧山区瓜沥镇 中通快递萧山宁围一部在哪里? 7651.9285.9238运单号中通快递 用什么地理绘图软件做这样一幅空间轨迹图? 领导在重视下属之前,一般都会进行哪些暗示? 春节的来历10--15字? 如何在 Word 2003 中恢复丢失的文件 学而思口算宝不能用了?