#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct DuLNone{
int data;
struct DuLNone *prior,*next;
}DuLNone,*DuLinklist;
void InitLink(DuLinklist &L){
L =new DuLNone;
L->prior = NULL;
L->next = L->prior;
}
void top_CreaLink(DuLinklist &L){
int n;
DuLinklist p;
cout<<"请输入要赋值的个数"<<endl;
cin>>n;
cout<<"请输入"<<n<<"位数"<<endl;
while(n--){
p = new DuLNone;
cin>>p->data;
p->prior = L;
p->next = L->next;
L->next = p;
}
}
void bot_CreaLink(DuLinklist &L){
int n;
DuLinklist p,r;
r = L;
cout<<"请输入要赋值的个数"<<endl;
cin>>n;
cout<<"请输入"<<n<<"位数"<<endl;
while(n--){
p = new DuLNone;
cin>>p->data;
p->prior = r;
p->next = NULL;
r->next = p;
r = p;
}
}
int GetLink(DuLinklist L,int e){
DuLinklist p;
p = L->next;
int j = 1;
while(p != NULL && p->data != e){
j++;
p = p->next;
}
if(p==NULL)return 0;
return j;
}
void DelLink(DuLinklist &L,int e){
DuLinklist p,r;
p = L->next;
int j = 1;
while(p != NULL && j<e){
j++;
p = p->next;
}
if(p->next == NULL){
r = p->prior;
r->next = NULL;
}else{
r = p->prior;
r->next = p->next;
r = p->next;
r->prior= p->prior;
}
}
void InterLink(DuLinklist L,int e,int n){
DuLinklist p,r;
p = L->next;
int j = 1;
while(p != NULL && j<n-1){
j++;
p = p->next;
}
r = new DuLNone;
r->data = e;
r->prior = p->prior;
r->next = p;
p->prior = r;
p = r->prior;
p->next = r;
}
void ListLink(DuLinklist L){
DuLinklist p;
p = L->next;
while(p!=NULL){
cout<<p->data<<' ';
p = p->next;
}
}
void error(){
cout<<endl<<"数据错误,请重新运行程序!!!";
}
int main() {
DuLinklist L;
int e,n;
InitLink(L);
bot_CreaLink(L);
ListLink(L);
cout<<endl<<"请输入删除的数"<<endl;
cin>>e;
e = GetLink(L,e);
DelLink(L,e);
ListLink(L);
cout<<endl<<"请输入插入的位置"<<endl;
cin>>n;
cout<<endl<<"请输入插入的数"<<endl;
cin>>e;
InterLink(L,e,n);
ListLink(L);
}
