c++怎么在链表中插入结点

简单的插在最后就行了,不用比较之类的。... 简单的插在最后就行了,不用比较之类的。 展开
 我来答
wcwanchang
推荐于2017-09-13 · TA获得超过189个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:0
展开全部
一般你只会拥有一个链表的头指针,要根据这个指针进行循环到达最后一个节点,然后在这个节点后面加入一个新的节点。下面是完整的代码,包括链表的创建,增加节点
#include"iostream"
using namespace std;

typedef struct Lnode //定义一个链表
{
int data;
struct Lnode *next;
}*Listnode;

void create(Listnode &l,int n) //在链表中填充数据,每次输入一个数就会自动在表
{ //的后面加上一个节点
//这个是比较简单的创建链表的方法之一
l = (Listnode)malloc(sizeof(Lnode));
l->next = NULL;
Listnode p,q;
p = l;
int d;
cout<<"依次输入 "<<n<<" 个数据"<<endl;
for(int i = 1 ; i <= n ; i ++)
{
q = (Listnode)malloc(sizeof(Lnode));
q->next = NULL;
p->next = q;
p = p->next;
cin>>d;
q->data = d;
}
}

void insert(Listnode &l) //插入数据的方法
{
int num;
cout<<"输入想要添加的数字:";
cin>>num;
Listnode p,q;
p = l;
while(p->next) //循环到链表尾部
p = p->next;

q = (Listnode)malloc(sizeof(Lnode)); //创建一个新节点
q->next = NULL; //链表最后一个节点的指针应为null
p->next = q; //把这个新建的节点连接到原来的链表上
q->data = num;
}

void print(Listnode l)
{
Listnode p = l->next;
while(p)
{
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}

int main()
{
Listnode head1;
head1 = NULL;
create(head1,4);
cout<<"最初的链表为:";
print(head1);
insert(head1);
cout<<endl<<"插入数据后的的链表为:";
print(head1);

return 0;
}
自由心向往之
2010-04-18 · TA获得超过306个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:275万
展开全部
新定义一个结点指针,如p1,并复制,然后用原先的链表指针(如p)指向p1,p->next=p1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujiananxx
2010-04-18 · TA获得超过395个赞
知道小有建树答主
回答量:325
采纳率:100%
帮助的人:185万
展开全部
定义prt1,复制,prt->next=prt1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hua543975127
2019-04-28
知道答主
回答量:2
采纳率:0%
帮助的人:1528
展开全部
后插法创建新的链表,然后根据表头,表中,表尾之前插入节点
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
typedef struct Node {
int info;
struct Node *next;
}*List;
void creatList(List *head,int n=0) {
int i;
List p,q;
*head = (List)malloc(sizeof(struct Node));
(*head)->next = NULL;
q = *head;
for ( i = 0; i < n; i++)
{
p = (List)malloc(sizeof(struct Node));
cin >> p->info;
p->next = q->next;
q->next = p;
p = q;
}
}
void List_insert(List l) {
int num,pos;
cout << "输入想要添加的数字:";
cin >> num;
List p, q;
p = l->next;
cout << "输入想要添加的位置:";
cin >> pos;
if (pos==1)
{
q = (List)malloc(sizeof(List)); //创建一个新节点
q->next = l->next->next;
l->next->next = q;
q->info = l->next->info;
l->next->info = num;
outputlist(l);
}
else if (pos==List_length(l))
{
while (p->next) //循环到链表尾部
p = p->next;
q = (List)malloc(sizeof(List)); //创建一个新节点
q->next = p->next;
p->next = q;
q->info = p->info;
p->info = num;
outputlist(l);
}
else
{
for (int i = 1; i < pos; i++)
{
p = p->next;
}
q = (List)malloc(sizeof(List)); //创建一个新节点
q->next = p->next;
p->next = q;
q->info = p->info;
p->info = num;
outputlist(l);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式