#include<bits/stdc++.h>
using namespace std;
struct LNode{
int data;
LNode *next;
LNode *prior;
};
void InitList(LNode * &L){
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
L->prior=NULL;
}
bool isEmpty(LNode *L){
if(L->next==NULL)
return true;
else
return false;
}
void ListInsert(LNode * &L,int i,int value){
if(i<1){
cout<<"插入位置不合法"<<endl;
return;
}
LNode *p=L;
LNode *t=(LNode *)malloc(sizeof(LNode));
int j=0;
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p==NULL){
cout<<"插入位置不合法"<<endl;
return;
}
t->data=value;
t->next=p->next;
if(p->next!=NULL)
p->next->prior=t;
p->next=t;
t->prior=p;
printf("%d插入成功\n",value);
}
void ListDelete(LNode * &L,int i){
if(i<1){
cout<<"删除位置不合法"<<endl;
return;
}
LNode *p=L;
int j=0;
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p==NULL||p->next==NULL){
cout<<"删除位置不合法"<<endl;
return;
}
if(p->next->next!=NULL)
p->next->next->prior=p;
p->next=p->next->next;
printf("第%d个节点删除成功\n",i);
}
void ListUpdate(LNode * &L,int i,int value){
if(i<1){
cout<<"修改位置不合法"<<endl;
return ;
}
LNode *p=L;
int j=0;
while(p!=NULL&&j<i){
p=p->next;
j++;
}
if(p==NULL){
cout<<"修改位置不合法"<<endl;
return ;
}
p->data=value;
printf("第%d个节点的数据修改为:%d\n",i,value);
}
void GetElem(LNode *L,int i){
if(i<1){
cout<<"查找位置不合法"<<endl;
return;
}
LNode *p=L;
int j=0;
while(p!=NULL&&j<i){
p=p->next;
j++;
}
if(p==NULL){
cout<<"查找位置不合法"<<endl;
return;
}
int value=p->data;
printf("查找成功,第%d个节点元素为:%d\n",i,value);
}
void ListShow(LNode * &L){
LNode *T=L->next;
while(T!=NULL){
cout<<T->data<<" ";
T=T->next;
}
cout<<endl;
}
int main(){
LNode *L;
InitList(L);
isEmpty(L)?cout<<"空"<<endl:cout<<"非空"<<endl;
ListInsert(L,1,5);
ListInsert(L,2,6);
ListInsert(L,3,3);
ListInsert(L,1,8);
ListInsert(L,2,2);
ListInsert(L,3,9);
ListShow(L);
ListDelete(L,1);
ListDelete(L,9);
ListDelete(L,4);
ListShow(L);
GetElem(L,1);
GetElem(L,2);
GetElem(L,9);
ListUpdate(L,1,6);
ListUpdate(L,3,9);
ListUpdate(L,8,6);
ListShow(L);
isEmpty(L)?cout<<"空"<<endl:cout<<"非空"<<endl;
return 0;
}
|