1个回答
展开全部
建立一个单链表,实现插入与删除功能的代码如下:
///单链表
#include<iostream>
using namespace std;
typedef int elemtype; //数据类型模版
struct Lnode //结点
{
elemtype data;
Lnode *next;
};
///建表
void creat_Link(Lnode &head)
{
Lnode *p,*q;
int n;
p=new Lnode;
head=p;
cout<<"输入链表长度:"<<endl;
cin>>n;
cout<<"输入数据:"<<endl;
cin>>p->data;
q=p;
for(int i=1;i<=n-1;i++)
{
p=new Lnode;
//cout<<"输入数据:";
cin>>p->data;
q->next=p;
q=p;
}
q->next=NULL;
}
///表的输出
void output_Link(Lnode *&head)
{
if(head==NULL)
{cout<<"空链表!"<<endl;
return;}
Lnode *q;
q=head;
//cout<<"此链表为:";
while(q!=NULL)
{
cout<<q->data<<" ";
q=q->next;
}
cout<<endl;
}
///表的插入
void insert_Link(Lnode *&head)
{
int i;
cout<<"输入要插入的位置:";
cin>>i;
Lnode *q,*iq;
q=head;
for(int j=1;j<i;j++)
{
iq=q;
q=q->next;
}
cout<<"输入插入的数据:";
Lnode *p;
p=new Lnode;
cin>>p->data;
p->next=iq->next;
iq->next=p;
cout<<endl;
}
///表的数据删除
void Delete_Link(Lnode *&head)
{
cout<<"输入删除的位置:";
int i;
cin>>i;
if(i==1)
head=head->next;
else
{
Lnode *p,*q;
q=head;
for(int j=1;j<i;j++)
{ p=q;
q=q->next;
}
p->next=q->next;
delete q;
cout<<endl;
}
}
int main()
{
Lnode *head;
head=NULL;
creat_Link(head);
insert_Link(head);
output_Link(head);
Delete_Link(head);
output_Link(head);
return 0;
}
[扩展]
以“结点的序列”表示线性表称作线性链表(单链表),链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
///单链表
#include<iostream>
using namespace std;
typedef int elemtype; //数据类型模版
struct Lnode //结点
{
elemtype data;
Lnode *next;
};
///建表
void creat_Link(Lnode &head)
{
Lnode *p,*q;
int n;
p=new Lnode;
head=p;
cout<<"输入链表长度:"<<endl;
cin>>n;
cout<<"输入数据:"<<endl;
cin>>p->data;
q=p;
for(int i=1;i<=n-1;i++)
{
p=new Lnode;
//cout<<"输入数据:";
cin>>p->data;
q->next=p;
q=p;
}
q->next=NULL;
}
///表的输出
void output_Link(Lnode *&head)
{
if(head==NULL)
{cout<<"空链表!"<<endl;
return;}
Lnode *q;
q=head;
//cout<<"此链表为:";
while(q!=NULL)
{
cout<<q->data<<" ";
q=q->next;
}
cout<<endl;
}
///表的插入
void insert_Link(Lnode *&head)
{
int i;
cout<<"输入要插入的位置:";
cin>>i;
Lnode *q,*iq;
q=head;
for(int j=1;j<i;j++)
{
iq=q;
q=q->next;
}
cout<<"输入插入的数据:";
Lnode *p;
p=new Lnode;
cin>>p->data;
p->next=iq->next;
iq->next=p;
cout<<endl;
}
///表的数据删除
void Delete_Link(Lnode *&head)
{
cout<<"输入删除的位置:";
int i;
cin>>i;
if(i==1)
head=head->next;
else
{
Lnode *p,*q;
q=head;
for(int j=1;j<i;j++)
{ p=q;
q=q->next;
}
p->next=q->next;
delete q;
cout<<endl;
}
}
int main()
{
Lnode *head;
head=NULL;
creat_Link(head);
insert_Link(head);
output_Link(head);
Delete_Link(head);
output_Link(head);
return 0;
}
[扩展]
以“结点的序列”表示线性表称作线性链表(单链表),链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询