//#include "define.h"
#include
#include
#ifndef _ALLDEFINE_
#define _ALLDEFINE_
#define SQLMAXSIZE 100
#define List_Size 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef char ElemType;
typedef int SqlElemType;
typedef struct DuLinkNode{
struct DuLinkNode *prior;
SqlElemType data;
struct DuLinkNode *next;
} DuLinkNode,*DuLinkList;
Status InitDL(DuLinkList *L);
Status CreatDL_L(DuLinkList L,SqlElemType length);
Status CreatDL_H(DuLinkList L,SqlElemType length);
Status PrintDL(DuLinkList L);
Status DL_Insert(DuLinkList L,SqlElemType position,SqlElemType e);
Status DL_Delete(DuLinkList L,SqlElemType position,SqlElemType *e);
#endif
#include "main.h"
Status InitDL(DuLinkList *L){
*L = (DuLinkList)malloc(sizeof(DuLinkNode));
(*L)->prior = NULL;
(*L)->next = NULL;
return 0;
}
#include "main.h"
Status CreatDL_L(DuLinkList L,SqlElemType length){
DuLinkList p =L;
DuLinkList s;
int i;
if(p->next)
p=p->next;
for(i = 0;i < length;i++){
s = (DuLinkList)malloc(sizeof(DuLinkNode));
s->prior = NULL;
s->next = NULL;
int e;
scanf("%d",&e);
s->data = e;
p->next = s;
s->prior = p;
p = s;
}
return OK;
}
#include "main.h"
Status CreatDL_H(DuLinkList L,SqlElemType length){
DuLinkList p =L;
DuLinkList s;
int i;
for(i = 0;i < length;i++){
s = (DuLinkList)malloc(sizeof(DuLinkNode));
s->prior = NULL;
s->next = NULL;
int e;
scanf("%d",&e);
s->data = e;
s->next = p->next;
s->prior = p;
p->next =s;
}
return OK;
}
#include "main.h"
Status PrintDL(DuLinkList L){
int length,i;
length = 4;
//int a[length];
DuLinkList p = L;
printf("当前保存的数据为:");
for(i = 0;i
//a[i] = p->data;
p = p->next;
printf("%d->",p->data);
}
printf("n");
return OK;
}
#include "main.h"
Status DL_Insert(DuLinkList L,SqlElemType position,SqlElemType e){
DuLinkList p =L;
DuLinkList s;
int i = 1;
while(p->next &&i
p = p->next;
i++;
}
s = (DuLinkList)malloc(sizeof(DuLinkNode));
s->prior = NULL;
s->next = NULL;
s->data = e;
s->next = p->next;
s->prior = p;
p->next =s;
p->next->prior = s;
return OK;
}
#include "main.h"
Status DL_Delete(DuLinkList L,SqlElemType position,SqlElemType *e){
DuLinkList p =L;
int i = 1;
while(p->next && i
p = p->next;
i++;
}
if(!(p->next))
return ERROR;
DuLinkList pfree = p->next;
*e = p->next->data;
p->next =p->next->next;
p->next->next->prior = p;
free(pfree);
pfree = NULL;
return OK;
}
}
}
#include
#include
#include "main.h"
int main(){
DuLinkList L = NULL;
InitDL(&L);
//CreatDL_L(L,3);
CreatDL_H(L,3);
//DL_Insert(L,2,5);
int e;
DL_Delete(L,1,&e);
printf("%dn",e);
PrintDL(L);
return 0;
}
}