早教吧作业答案频道 -->其他-->
以带头结点的单链表表示有序表,编写算法,从有序表A中删除所有和有序表B中元素相同的结点
题目详情
以带头结点的单链表表示有序表, 编写算法,从有序表A中删除所有和有序表B中元素相同的结点
▼优质解答
答案和解析
#include
#include
typedef struct node
{
int data;
struct node *next;
}NODE;
NODE * creat(int n)
{
int i,d;
NODE *head,*p,*q;
head = NULL;
if(head == NULL)
{
printf("输入第1个结点:");
scanf("%d", &d);
head = (NODE*)malloc(sizeof(NODE));
head->data = d;
head->next = NULL;
}
p = head;
for(i=1; i {
printf("输入第%d个结点:",i+1);
scanf("%d",&d);
q = (NODE*)malloc(sizeof(NODE));
q->data = d;
q->next = NULL;
p->next = q;
p = q;
}
return head;
}
void output(NODE *head)
{
NODE *p;
p = head;
while(p!=NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
NODE *del(NODE *heada, NODE*headb)
{
NODE *pa,*pb,*temp,*qa;
pa = heada;
qa = heada;
pb = headb;
while(pa!=NULL)
{
while(pb!=NULL)
{
if(pa->data == pb->data)
{
if(pa == heada)
{
temp = pa;
heada = heada->next;
pa = heada;
qa = pa;
free(temp);
}
else
{
temp = pa;
qa->next = pa->next;
pa = pa->next;
free(temp);
}
}
if(pa!=NULL&&(pa->data < pb->data))
{
qa = pa;
pa = pa->next;
break;
}
pb = pb->next;
}
}
return heada;
}
void main()
{
int n;
NODE *heada,*headb;
printf("输入链表a结点个数:");
scanf("%d",&n);
heada = creat(n);
printf("链表a:");
output(heada);
printf("输入链表b结点个数:");
scanf("%d",&n);
headb = creat(n);
printf("链表b:");
output(headb);
heada = del(heada,headb);
output(heada);
}
#include
typedef struct node
{
int data;
struct node *next;
}NODE;
NODE * creat(int n)
{
int i,d;
NODE *head,*p,*q;
head = NULL;
if(head == NULL)
{
printf("输入第1个结点:");
scanf("%d", &d);
head = (NODE*)malloc(sizeof(NODE));
head->data = d;
head->next = NULL;
}
p = head;
for(i=1; i
printf("输入第%d个结点:",i+1);
scanf("%d",&d);
q = (NODE*)malloc(sizeof(NODE));
q->data = d;
q->next = NULL;
p->next = q;
p = q;
}
return head;
}
void output(NODE *head)
{
NODE *p;
p = head;
while(p!=NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
NODE *del(NODE *heada, NODE*headb)
{
NODE *pa,*pb,*temp,*qa;
pa = heada;
qa = heada;
pb = headb;
while(pa!=NULL)
{
while(pb!=NULL)
{
if(pa->data == pb->data)
{
if(pa == heada)
{
temp = pa;
heada = heada->next;
pa = heada;
qa = pa;
free(temp);
}
else
{
temp = pa;
qa->next = pa->next;
pa = pa->next;
free(temp);
}
}
if(pa!=NULL&&(pa->data < pb->data))
{
qa = pa;
pa = pa->next;
break;
}
pb = pb->next;
}
}
return heada;
}
void main()
{
int n;
NODE *heada,*headb;
printf("输入链表a结点个数:");
scanf("%d",&n);
heada = creat(n);
printf("链表a:");
output(heada);
printf("输入链表b结点个数:");
scanf("%d",&n);
headb = creat(n);
printf("链表b:");
output(headb);
heada = del(heada,headb);
output(heada);
}
看了以带头结点的单链表表示有序表,...的网友还看了以下:
请在下列算法的横线上填入适当的语句.typedefstructnode{intdata;struc 2020-05-17 …
先根次序周游树等同于按哪一种方法周游二叉树?A.前序法B.后序法C.对称序法D.后根次序 2020-05-23 …
下列排序方法中,哪个是稳定的排序方法?()A.直接选择排序B.二分法插入排序C.希尔排序D.快速排序 2020-05-24 …
()属于无限花序中的复合花序。A.穗状花序B.多歧聚伞花序C.头状花序D.圆锥花序 2020-05-25 …
()属无限花序中的复合花序。A.穗状花序B.多歧聚伞花序C.头状花序D.圆锥花序 2020-05-25 …
()属有限花序中的简单花序。A.穗状花序B.多歧聚伞花序C.头状花序D.圆锥花序 2020-05-25 …
下面4种排序方法中,(55)是一种稳定性排序方法。A.插入排序法B.选择排序法C.快速排序法D.希尔 2020-05-26 …
急求作文各种开头方法的例子1.开门见山2引用开头法3运用修辞4悬念是开头5描写景物6描形绘神7心理 2020-07-24 …
有序顺序表合并有顺序表A和B.其元素均按从小到大的升序排列,编写一个算法将它们合并成一个新的顺序表C 2020-11-28 …
以带头结点的单链表表示有序表,编写算法,从有序表A中删除所有和有序表B中元素相同的结点 2020-12-05 …