展开全部
一般你只会拥有一个链表的头指针,要根据这个指针进行循环到达最后一个节点,然后在这个节点后面加入一个新的节点。下面是完整的代码,包括链表的创建,增加节点
#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;
}
#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;
}
展开全部
新定义一个结点指针,如p1,并复制,然后用原先的链表指针(如p)指向p1,p->next=p1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义prt1,复制,prt->next=prt1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
后插法创建新的链表,然后根据表头,表中,表尾之前插入节点
#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);
}
}
#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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询