#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode
{
int data;
struct linknode *prev,*next;
}Node,*List;
List Createlist(int n)
{
List head=(List)malloc(sizeof(Node));
Node *p,*q;
int a;
p=head;
for(int i=0; i<n; i++)
{
q=(List)malloc(sizeof(Node));
scanf("%d",&a);
q->data=a;
p->next=q;
q->prev=p;
p=q;
}
p->next=NULL;
head=head->next;
head->prev=NULL;
return head;
}
void Delete_x(List L,int n,int x)
{
Node *p=L;
Node *r=L;
for(int i=0;i<n;i++)
{
if(p->data==x)
{
r=p->next;
p->next=r->next;
r=r->next;
p=r->prev;
p=p->next;
}
p=p->next;
}
while(L)
{
printf("%d ",L->data);
L=L->next;
}
}
int main(void)
{
int n;
scanf("%d",&n);
List L=Createlist(n);
int x;
scanf("%d",&x);
Delete_x(&L,n,x);
return 0;
}
有一个非空双链表L,设计一个算法删除所有值为x的结点。
【输入形式】
输入数据为两行,第一行是输入数据个数,第二行是输入数据,第三行是x的值
【输出形式】
删除值为x后的序列,以空格分隔
【样例输入】
7
1 3 5 6 8 6 7
6
【样例输出】
1 3 5 8 7
Delete_x怎样改才可以输出,实在写的我一脸懵。