本文共 1742 字,大约阅读时间需要 5 分钟。
#include#include #define Status int#define ElemType int#define OK 1#define ERROR 0#define OVERFLOW -2typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;} DuLNode,*DuLinkList;void CreateList_DuL(DuLinkList &L,int n){ DuLinkList p; L=(DuLinkList)malloc(sizeof(DuLNode)); L->prior=L->next=L; for(int i=0; i data); p->next=L->next; p->prior=L; L->next->prior=p; L->next=p; }}DuLinkList GetElemP_DuL(DuLinkList L,int i){ DuLinkList p; p=L->next; int j=1; while(p&&j next; j++; } if(!p||j>i) return NULL; return p;}Status ListInsert_DuL(DuLinkList &L,int i,ElemType e){ DuLinkList p,s; if(!(p=GetElemP_DuL(L,i))) { return ERROR; } if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return OK;}Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){ DuLinkList p; if(!(p=GetElemP_DuL(L,i))) return ERROR; e=p->data; p->prior->next=p->next; p->next->prior=p->prior; free(p); return OK;}int main(){ DuLinkList L,p; int n,i; ElemType e; scanf("%d",&n); CreateList_DuL(L,n); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); scanf("%d",&i); p=GetElemP_DuL(L,i); printf("e=%d\n",p->data); scanf("%d%d",&i,&e); ListInsert_DuL(L,i,e); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); scanf("%d",&i); ListDelete_DuL(L,i,e); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); printf("e=%d\n",e); return 0;}
转载地址:http://nrcsn.baihongyu.com/