#include<iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int InitList(LinkList &L)
{
L=new LNode; //生成新结点作为头结点
L->next=NULL; //头结点的指针域置空
return 1;
}
void CreateList(LinkList &L,int n) //尾插法输入链表,采用头插法输入的链表输出为逆序
{
LinkList r,p;
L=new LNode;
L->next=NULL;
r=L;
for(int i=0;i<n;i++)
{
p=new LNode;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
}
int LinkInsert(LinkList &L,int i,int e)
{
LinkList p,s;
p=L;
int j=0;
while(p&&(j<i-1))
{
p=p->next;
++j;
}
if(!p||j>i-1) return 0;
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int LinkDelete(LinkList &L,int i)
{
LinkList p,q;
int j=0;
p=L;
while((p->next)&&(j<i-1))
{
p=p->next;
++j;
}
if(!(p->next)||(j>i-1)) return 0;
q=p->next;
p->next=q->next;
delete q;
return 1;
}
int prin(LinkList &L)
{
LinkList p;
p=L->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
int main()
{
LNode *Pa;
InitList(Pa);
CreateList(Pa,5);
prin(Pa);
LinkInsert(Pa,4,8);
prin(Pa);
LinkDelete(Pa,4);
prin(Pa);
return 0;
}
单链表插入删除操作
最新推荐文章于 2024-06-29 01:13:46 发布