早教吧作业答案频道 -->其他-->
以带头结点的单链表表示有序表,编写算法,从有序表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);
}
看了以带头结点的单链表表示有序表,...的网友还看了以下:
对于下面的两张表,从表一到表二的分析过程称为______。表一A.上卷B.转轴C.切片D.下钻 2020-05-23 …
对于下面的两张表,从表一到表二的分析过程称为A.上卷B.下钻C.切片D.转轴 2020-05-23 …
(60)对于下面的两张表,从表一到表二的分析过程称为 A)上卷 B)下钻 C)切片 D)转轴 2020-05-23 …
对于下面的两张表,从表1到表2的分析过程为( )。 A.上钻B.下钻C.切片D.转轴 2020-05-23 …
对于下面的两张表,从表一到表二的分析过程称为( )。 A.上卷B.转轴C.切片D.下钻 2020-05-23 …
( 60 )对于下面的两张表,从表一到表二的分析过程称为A )上卷 B )转轴 C )切片 D )下 2020-05-23 …
有一个好表和一个坏表从中午12点整同时走坏表每小时慢4分钟.晚上9点整好表到达一个地点问好表要等坏表 2020-11-04 …
算法设计题1、请设计一算法:已知顺序表L,表中元素为整型且递增有序,现有一值为e的元素要插入L表,使 2020-12-07 …
口袋里有大小、形状完全相同的5块手表,2块手表的表带是银白色的,3块手表的表带是黄色的.从中任意摸一 2020-12-08 …
观察并分析下表,从表格中能够得出的历史结论是抗日战争部分时期国民党军队阵亡人数统计表时间(年)阵亡人 2020-12-23 …