c语言单链表链表如何插入多个节点

建立一个单链表后如何连续插入多个结点,最好是通用一点创建链表的方法,方便以后删除结点,双向链表什么的,要可以运行的完整代码,大神求救!!谢谢~... 建立一个单链表后如何连续插入多个结点,最好是通用一点创建链表的方法,方便以后删除结点,双向链表什么的,要可以运行的完整代码,大神求救!! 谢谢~ 展开
 我来答
tattackor
推荐于2018-03-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:889万
展开全部
如果已知一个节点指针pre和一个节点指针cur,要把cur插入到pre节点之后,很显然要保证链表不会断开而丢失后面的节点,要先把后面的节点指针(指向lat的指针)保存下来,即有cur->next = pre->next,然后把cur连接的一串链表连接到pre后面,即pre->next = cur;

上面介绍了,在一个节点之后插入节点的情况。这是通常的情况。如果要向一个链表的头部插入节点,就只需要将新节点的下一个指针指向链表的头指针即可。

在这种情况下,有两点要注意:

1,链表是否为空链表

2,要插入的节点是不是空指针。

代码实现:

//向单链表中插入一个节点(插入在链开始处)
//输入参数:单链表的头指针和要插入的节点指针
//输出参数:无
//返回值:指向单链表的头指针
SingleList* Insert(SingleList *head,SingleList *node)
{
if(node == NULL)
{
return head;
}
else if(head == NULL)
{
return node;
}

node->next = head;
head = node;
return head;
}
百度网友881ca15
推荐于2016-05-26 · TA获得超过5317个赞
知道小有建树答主
回答量:223
采纳率:100%
帮助的人:148万
展开全部
单链表的创建与插入
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Student
{
char num[10];//学号
char name[15];//姓名
struct Student*next;
}S;
void creat(S**head);
void insert(S**head,S*p0);
void main()
{
S*head,*p0;
head=NULL;
p0=(S*)malloc(sizeof (S));
puts("请输入要插入节点信息:");
scanf("%s %s",p0->num,p0->name);
puts("请输入节点信息:");
creat(&head);
puts("输出插入后的节点信息:");
insert(&head,p0);
puts("");

}
void creat(S**head)
{
S *p1,*p2;
p1=(S*)malloc(sizeof (S));
scanf("%s %s",p1->num,p1->name);
while(strcmp(p1->num,"11")>0)
{
if(*head==NULL)
*head=p1;
else
p2->next=p1;
p2=p1;
p1=(S*)malloc(sizeof (S));
scanf("%s %s",p1->num,p1->name);
}
p2->next=NULL;
}
void insert(S**head,S *p0)
{
S*p1,*p2;
if(*head==NULL)
return;
p1=*head;
while(strcmp(p1->num,p0->num)<0&& p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(strcmp(p1->num,p0->num)>=0)
{
if(*head==p1)
{
*head=p0;
p0->next=p1;
}
else
{
p2->next=p0;
p0->next=p1;

}
}
else
{
p1->next=p0;
p0->next=NULL;
}

for(p1=*head;p1!=NULL;p1=p1->next)
{
printf("%s %s\n",p1->num,p1->name);
}
}
望采纳
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式