永发信息网

c语言链表的用途是什么

答案:5  悬赏:30  手机版
解决时间 2021-11-26 21:04
c语言链表的用途是什么
最佳答案
1、链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。
2、例程:


#include
#include
typedef int ElemType;
typedef struct NodeType
{
ElemType data;
struct NodeType *next;
} NodeType,*LinkType;
LinkType create()
{//建立链表,返回链表的首地址,头结点没有数据
LinkType head,p1,p2;
head=(LinkType)malloc(sizeof(NodeType));
p1=head;
while(p1->data!=0)//当data=0时链表结束
{
p2=p1;
p1=(LinkType)malloc(sizeof(NodeType));
printf("Enter student's information:
data=");
scanf("%d",&p1->data);
p2->next=p1;
}
p2->next=NULL;
free(p1);
return(head);
}
void output(LinkType head)
{//链表的输出,接收链表的首地址
head=head->next;
while(head!=NULL)
{
printf("data=%d
",head->data);
head=head->next;
}
}
LinkType sort(LinkType head)
{//链表排序,接收链表首地址,返回链表首地址
LinkType ph,p1;
ElemType temp;
ph=head->next;
p1=head->next;
while(p1->next!=NULL)//冒泡法
{
ph=head;
while(ph->next!=NULL)
{
if(ph->data>ph->next->data)//按data由小到大排序
{
temp=ph->data;
ph->data=ph->next->data;
ph->next->data=temp;
}
ph=ph->next;
}
p1=p1->next;
}
return(head);
}
LinkType del(LinkType head)
{//删除结点,接收链表的首地址,返回链表的首地址
ElemType DelData;
LinkType ph,p;
ph=head->next;
printf("Enter the data you want to del:
DelData=");
scanf("%d",&DelData);
while(ph!=NULL && ph->data!=DelData)//寻找要删除的结点
{
p=ph;
ph=ph->next;
}
if(ph==NULL)//没有找到要删除的结点
{
printf("Enter error!
");
return(head);
}
else
{
if(ph==head->next)//删除头结点
{
head->next=ph->next;
}
else//删除其它结点
{
p->next=ph->next;
}
}
free(ph);
return(head);
}
LinkType insert(LinkType head)
{//插入结点,接收链表首地址,返回链表首地址
LinkType ph,p,insert,temp;
insert=(LinkType)malloc(sizeof(NodeType));
printf("Enter the data you want to insert:
data=");
scanf("%d",&insert->data);
ph=head->next;
while(ph!=NULL && ph->data < insert->data)//寻找插入的位置
{
p=ph;
ph=ph->next;
}
if(head->next->data > insert->data)//插入头部
{
temp=head->next;
head->next=insert;
insert->next=temp;
}
else//插入到其它地方
{
p->next=insert;
insert->next=ph;
}
return(head);
}
void main()
{
LinkType head;
head=create();
output(head);
printf("

");
head=sort(head);
output(head);
printf("

");
head=del(head);
output(head);
printf("

");
head=insert(head);
output(head);
}
全部回答
用来存储逻辑地址连序而物理地址不一定连序的数据存储结构
是一种存储数据的结构方式
可以作为临时存储容器
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
编写Adder类,定义3个静态重载方法,分别用于
85平方怎样改3房
湖南信息职业技术学院是列入国家招生计划、具
中国电信(色日克街营业厅)地址好找么,我有些
根据《保卫黄河》这篇课文的意思改成记叙文50
一起走千万不要回头是什么歌的歌词?
马儿?为什么曹操那边的人都叫马超马儿
个人简历A4纸为例一般写多少张纸?
我国建国至今多少年了
闲置葡萄酒如何转让更快
南宁有正规的古钱币交易市场吗?
去“福清天生林艺园”夏令营一般要带什么?
50>7X()
螺旋藻怎么做菜
内蒙古北方职业技术学院好不好?
推荐资讯
31➗3的竖式
在解方程x^2+px+q=0时,小张看错乐p,解得方
英语字母t和h在一起发什么音
爱情塔罗牌78张玩法,急急急!
中国人口未来会雪崩是骗局吗?
求教高人。关于戴尔E6410的内置WWAN问题
广州市二中的应元 仲元 苏元是什么关系 都是
高钾水溶肥哪个品牌好?
阜新市育才、辽工大附属高中哪个好?
买衣服为啥忌讳早上换衣服
给下面短文画线部分断句。  项王乃复引兵而
中国古代十大罪行是那些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?