#include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; typedef struct DNode{ int data; struct DNode *prior,*next; }DNode,*DLinkList; //头插创建双链表 int creat_DLinkList(DLinkList &DL) { DNode *p;int x; DL=(DLinkList)malloc(sizeof(DNode)); DL->next=NULL; DL->prior=NULL; scanf("%d",&x); while(x!=4444) { p=(DLinkList)malloc(sizeof(DNode)); p->data=x; p->next=DL->next; p->prior=DL; DL->next=p; scanf("%d",&x); } } //显示打出 int show_Dlist(DLinkList DL) { DNode *p=DL->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } //插入节点 int sert_DNode(DLinkList &DL,int i,int x) { DNode *p=DL->next;DNode *q; q=(DLinkList)malloc(sizeof(DNode)); q->data=x; for(int j=1;j<i-1;j++) { p->next; } q->next=p->next; p->next->prior=q; p->next=q; q->prior=q; } //删除第i个节点 int Delete_DNode(DLinkList DL,int i) { DNode *p=DL->next;DNode *q; q=(DLinkList)malloc(sizeof(DNode)); for(int j=1;j<i-1;j++) { p=p->next; } q=p->next; p->next=q->next; q->next->prior=p; free(q); } int main() { DNode *DL; creat_DLinkList(DL); show_Dlist(DL); sert_DNode(DL,2,11); show_Dlist(DL); Delete_DNode(DL,3); show_Dlist(DL); }