问题:(双链表建表输入输出都正常),sc函数调用后,却没有输出结果,相当于最后四行不运行,为什么?
题目:有一个非空双链表L,设计一个算法删除第一个值为x的节点
#include<stdio.h>
#include<malloc.h>
typedef int EleType;
typedef struct DLnode
{
int data;
struct DLnode *next;
struct DLnode *prior;
}DLinkNode;
void InitList(DLinkNode *&L)
{
L=(DLinkNode *)malloc(sizeof(DLinkNode));
L->next=L->prior=NULL;
}
void CreatList(DLinkNode *&L,int a[],int n)
{
DLinkNode *p,*r;
L=(DLinkNode *)malloc(sizeof(DLinkNode));
r=L;
for(int i=0;i<n;i++)
{
p=(DLinkNode *)malloc(sizeof(DLinkNode));
p->data=a[i];
r->next=p;
r=p;
}
r->next=NULL;
}
void DispList(DLinkNode *L)
{
DLinkNode *p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
bool sc(DLinkNode *L,int x)
{
int i=0;
DLinkNode *p=L->next,*q;
while(p!=NULL&&p->data!=x)
{
p=p->next;
}
if(p==NULL)
return false;
else
{
q=p->next;
if(q!=NULL)
q->prior=p->prior;
p->prior->next=q;
free(p);
return true;
}
}
int main()
{
DLinkNode *L;
int a[7];
InitList(L);
printf("请输入:");
for(int i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
CreatList(L,a,7);
printf("请输出:");
DispList(L);
sc(L,3);
printf("删除后请输出:");
DispList(L);
return 0;
}