#include<iostream>
using namespace std;
typedef struct LNode
{
int data; //节点数据域
struct LNode *next; //指针域 、链域
} LNode, *LinkList;
bool CreatList_L(LinkList &L,int n)
{
L=new LNode; //创建一个头结点
if(!L)exit(-1);//如果分配失败,退出程序
L->next=NULL;
L->data=n; //存储链表的长度
LinkList p=L; //指向节点的指针
while(n--)
{
p->next=new LNode; //开辟新节点
p=p->next; //p后移
cin>>p->data; //输入
p->next=NULL;
}
return 0;
}
bool ListInsert_L(LinkList L,int i, int e)
{
LinkList p;
p=L;
if(i<1 || i>L->data )
{
cout<<"位置不合法 !"<<endl;
return 1; //位置不合法,不作任何操作
}
else
{
LinkList q;
q=new LNode; //创建要插入的节点
q->data=e;
q->next=NULL;
for(int j=1;j<i;++j) //循环找到插入的位置
p=p->next;
q->next=p->next; //进行插入
p->next=q;
L->data+=1; //链表长度加1
}
}
bool ListDelete_L(LinkList L,int i,int &e)
{
if(i<1 || i>L->data)
{
cout<<"位置不合法 !"<<endl;
return 1;
}
else
{
LinkList p=L,q;
for(int j=1;j<i;++j)
p=p->next;
e=p->next->data;
q=p->next;
p->next=p->next->next;
delete q;
L->data-=1;
return 0;
}
}
bool GetElem_L(LinkList L,int i, int &e)
{
if(i<1 || i>L->data)
{
cout<<"位置不合法 !"<<endl;
return 1;
}
else
{
LinkList p=L;
for(int j=1;j<=i;++j)
p=p->next;
e=p->data;
return 0;
}
}
int main()
{
LinkList L; //头指针
int i=3,e=22,n=5;
CreatList_L(L,n);
GetElem_L(L,i,e);
cout<<e<<endl;
ListInsert_L(L,i,e);
cout<<e<<endl;
ListDelete_L(L,i,e);
cout<<e<<endl;
system("pause");
return 0;
}
using namespace std;
typedef struct LNode
{
int data; //节点数据域
struct LNode *next; //指针域 、链域
} LNode, *LinkList;
bool CreatList_L(LinkList &L,int n)
{
L=new LNode; //创建一个头结点
if(!L)exit(-1);//如果分配失败,退出程序
L->next=NULL;
L->data=n; //存储链表的长度
LinkList p=L; //指向节点的指针
while(n--)
{
p->next=new LNode; //开辟新节点
p=p->next; //p后移
cin>>p->data; //输入
p->next=NULL;
}
return 0;
}
bool ListInsert_L(LinkList L,int i, int e)
{
LinkList p;
p=L;
if(i<1 || i>L->data )
{
cout<<"位置不合法 !"<<endl;
return 1; //位置不合法,不作任何操作
}
else
{
LinkList q;
q=new LNode; //创建要插入的节点
q->data=e;
q->next=NULL;
for(int j=1;j<i;++j) //循环找到插入的位置
p=p->next;
q->next=p->next; //进行插入
p->next=q;
L->data+=1; //链表长度加1
}
}
bool ListDelete_L(LinkList L,int i,int &e)
{
if(i<1 || i>L->data)
{
cout<<"位置不合法 !"<<endl;
return 1;
}
else
{
LinkList p=L,q;
for(int j=1;j<i;++j)
p=p->next;
e=p->next->data;
q=p->next;
p->next=p->next->next;
delete q;
L->data-=1;
return 0;
}
}
bool GetElem_L(LinkList L,int i, int &e)
{
if(i<1 || i>L->data)
{
cout<<"位置不合法 !"<<endl;
return 1;
}
else
{
LinkList p=L;
for(int j=1;j<=i;++j)
p=p->next;
e=p->data;
return 0;
}
}
int main()
{
LinkList L; //头指针
int i=3,e=22,n=5;
CreatList_L(L,n);
GetElem_L(L,i,e);
cout<<e<<endl;
ListInsert_L(L,i,e);
cout<<e<<endl;
ListDelete_L(L,i,e);
cout<<e<<endl;
system("pause");
return 0;
}