双向链表删除问题

来源:互联网 发布:力高答题软件 编辑:程序博客网 时间:2024/05/17 18:15

关于自己为什么总是犯很脑残的错误。。。吃点脑残片估计就好了
上代码,双向链表删除问题:

#include <stdio.h>#include <stdlib.h>typedef struct DLNode{    int data;    DLNode *prior;    DLNode *next;}*DList,DLNode;void Creat(DList &L,int n){//这次要采用尾插法来创建双向链表   L=(DList)malloc(sizeof(struct DLNode));   L->next=NULL;    DList s,t;    t=L;//t将会代表L进行一系列的活动     for(int i=1;i<=n;i++){       s=(DList)malloc(sizeof(struct DLNode));       scanf("%d",&s->data);       s->prior=t;       t->next=s;       t=s;    }     t->next =NULL;}void Delete(DList &L,int i,int &e){//删除第i个节点,并返回这个节点的数值   DList p;   p=L;   int j=0;   while (p&&j<i){      j++;      p=p->next;    }    if(j!=i){        printf("这种点不存在!");    }    if(p->next==NULL){       p->prior->next=NULL;    }    else{        e=p->data ;       p->prior->next =p->next;       p->next->prior =p->prior;        }}void Print(DList L3){    L3=L3->next;     while(L3){              printf("%d",L3->data);        L3=L3->next;    }}int main(){    DList L;    int n,i,e;    scanf("%d,%d,%d",&n,&i,&e);    Creat(L,n);    Print(L);    Delete(L,i,e);    Print(L);    return 0;}
原创粉丝点击