#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *prior;
struct node *next;
}Node,*LinkList;
//初始化(头插法)
bool InitList(LinkList &L,int n){
L=(LinkList)malloc(sizeof(Node));
L->prior=NULL;
L->next=NULL;
int x;
printf("请输入结点的值");
scanf("%d",&x);
Node *p;
p=(Node *)malloc(sizeof(Node));
p->data=x;
L->next=p;
p->prior=L;
p->next=NULL;
while(n-1>0){
printf("请输入结点的值");
scanf("%d",&x);
if(x!=0){
p=(Node *)malloc(sizeof(Node));
p->data=x;
p->next=L->next;
L->next->prior=p;
p->prior=L;
L->next=p;
}
n--;
}
return true;
}
//删除结点
bool DelNode(LinkList &L,int i){
LinkList m=L;
LinkList q;
int j;
for(j=0;j<i-1;j++){
m=m->next;
}
if(i==0){
L=L->next->next;//删除的是头结点
L->prior=NULL;
}
else
{
q=m->next;
m->next=q->next;
q->next->prior=m;
free(q);
}
return true;
}
//遍历
bool travel(LinkList &L){
LinkList m;
m=L->next;
while(m){
printf("%d",m->data);
m=m->next;
}
return true;
}
int main(){
LinkList L;int n;
printf("输入要插入的结点的个数:");
scanf("%d",&n);
InitList(L,n);
DelNode(L,3);
travel(L);
return 0;
}