早教吧作业答案频道 -->其他-->
单链表操作1.从键盘输入顺序任意的5个整数,生成第一个有序单链表,将该链表输出显示。2.再从键盘输入顺序任意的5个整数,生成第二个有序单链表,将该链表输出显示。3.将这两个
题目详情
单链表操作
1.从键盘输入顺序任意的5个整数,生成第一个有序单链表,将该链表输出显示。
2.再从键盘输入顺序任意的5个整数,生成第二个有序单链表,将该链表输出显示。
3.将这两个有序单链表合并成一个有序单链表,要求使用两个单链表的原有空间进行合并,将生成的有序单链表输出显示。
1.从键盘输入顺序任意的5个整数,生成第一个有序单链表,将该链表输出显示。
2.再从键盘输入顺序任意的5个整数,生成第二个有序单链表,将该链表输出显示。
3.将这两个有序单链表合并成一个有序单链表,要求使用两个单链表的原有空间进行合并,将生成的有序单链表输出显示。
▼优质解答
答案和解析
// 简单写了程序如下:
#include
#include
#include
typedef struct _node_
{
int data;
struct _node_ *next;
}NODE,*P_NODE;
P_NODE head = NULL;
P_NODE head1 = NULL;
P_NODE head2 = NULL;
void create_list(int cnt1,int cnt2);
void merge_list();
void display_list();
int main()
{
create_list(5,5);
printf("==========================\n");
printf("the first list is:");
display_list(head1);
printf("the second list is:");
display_list(head2);
printf("==========================\n");
merge_list();
printf("the merge list is:");
display_list(head);
return 0;
}
void create_list(int cnt1,int cnt2)
{
P_NODE pt = NULL;
int num = 1;
printf("Please input frist list==>\n");
while(cnt1-- > 0)
{
P_NODE p = (P_NODE)malloc(sizeof(NODE));
if(p == NULL)
{
printf("malloc memory failed.\n");
return;
}
p->next = NULL;
printf("Please input %d node value:",num++);
scanf("%d",&(p->data));
if(head1 == NULL)
head1 = p;
else
pt->next = p;
pt = p;
}
printf("Please input second list==>\n");
pt = NULL;
num = 1;
while(cnt2-- > 0)
{
P_NODE p = (P_NODE)malloc(sizeof(NODE));
if(p == NULL)
{
printf("malloc memory failed.\n");
return;
}
p->next = NULL;
printf("Please input %d node value:",num++);
scanf("%d",&(p->data));
if(head2 == NULL)
head2 = p;
else
pt->next = p;
pt = p;
}
}
void merge_list()
{
int i=0,j=0,temp=0;
P_NODE p1 = NULL,p2 = NULL,p = NULL,Tail = NULL;
head = NULL;
p1 = head1;
p2 = head2;
while(p1&&p2)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
if(p1->data < p2->data)
{
p->data = p1->data;
p1 = p1->next;
}
else
{
p->data = p2->data;
p2 = p2->next;
}
if(head==NULL)
head = p;
else
Tail->next = p;
Tail = p;
}
while(p1)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
p->data = p1->data;
Tail->next = p;
Tail = p;
p1 = p1->next;
}
while(p2)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
p->data = p2->data;
Tail->next = p;
Tail = p;
p2 = p2->next;
}
Tail = NULL;
}
void display_list(P_NODE head)
{
P_NODE pt = head;
while(pt)
{
printf("%d ",pt->data);
pt = pt->next;
}
printf("\n");
}
#include
#include
#include
typedef struct _node_
{
int data;
struct _node_ *next;
}NODE,*P_NODE;
P_NODE head = NULL;
P_NODE head1 = NULL;
P_NODE head2 = NULL;
void create_list(int cnt1,int cnt2);
void merge_list();
void display_list();
int main()
{
create_list(5,5);
printf("==========================\n");
printf("the first list is:");
display_list(head1);
printf("the second list is:");
display_list(head2);
printf("==========================\n");
merge_list();
printf("the merge list is:");
display_list(head);
return 0;
}
void create_list(int cnt1,int cnt2)
{
P_NODE pt = NULL;
int num = 1;
printf("Please input frist list==>\n");
while(cnt1-- > 0)
{
P_NODE p = (P_NODE)malloc(sizeof(NODE));
if(p == NULL)
{
printf("malloc memory failed.\n");
return;
}
p->next = NULL;
printf("Please input %d node value:",num++);
scanf("%d",&(p->data));
if(head1 == NULL)
head1 = p;
else
pt->next = p;
pt = p;
}
printf("Please input second list==>\n");
pt = NULL;
num = 1;
while(cnt2-- > 0)
{
P_NODE p = (P_NODE)malloc(sizeof(NODE));
if(p == NULL)
{
printf("malloc memory failed.\n");
return;
}
p->next = NULL;
printf("Please input %d node value:",num++);
scanf("%d",&(p->data));
if(head2 == NULL)
head2 = p;
else
pt->next = p;
pt = p;
}
}
void merge_list()
{
int i=0,j=0,temp=0;
P_NODE p1 = NULL,p2 = NULL,p = NULL,Tail = NULL;
head = NULL;
p1 = head1;
p2 = head2;
while(p1&&p2)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
if(p1->data < p2->data)
{
p->data = p1->data;
p1 = p1->next;
}
else
{
p->data = p2->data;
p2 = p2->next;
}
if(head==NULL)
head = p;
else
Tail->next = p;
Tail = p;
}
while(p1)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
p->data = p1->data;
Tail->next = p;
Tail = p;
p1 = p1->next;
}
while(p2)
{
p = (P_NODE)malloc(sizeof(NODE));
p->next = NULL;
p->data = p2->data;
Tail->next = p;
Tail = p;
p2 = p2->next;
}
Tail = NULL;
}
void display_list(P_NODE head)
{
P_NODE pt = head;
while(pt)
{
printf("%d ",pt->data);
pt = pt->next;
}
printf("\n");
}
看了单链表操作1.从键盘输入顺序任...的网友还看了以下:
阅读短文,完成下列各题。泥泞中。要把母亲的头巾举起①一直到我五岁,母亲才肯相信当初医生所说的话-- 2020-05-16 …
EXCEL表格A1+B1+C1=D1,D1=E1,E1显示任何字符,G1显示纸箱EXCEL表格A1 2020-06-03 …
关于betodosthOneofmydutiesistofiletheletters.为什么不On 2020-06-12 …
空间解析几何问题:怎样表示一个任意平面?还有,怎样表示任意一条直线?不要用向量,详细一点.以及平面 2020-06-14 …
阅读选文,完成下列各题。泥泞中。要把母亲的头巾举起①一直到我五岁,母亲才肯相信当初医生所说的话-- 2020-06-15 …
泥泞中。要把母亲的头巾举起一直到我五岁,母亲才肯相信当初医生所说的话--我永远不能说话了!母亲没有 2020-06-15 …
把母亲的头巾举起①一直到我五岁,母亲才肯相信当初医生所说的话---我永远不能说话了!②母亲没有任何 2020-07-01 …
依据下面的具体语境,填充对话,注意简明得体。(4分)公交车上已没有座位。一位太太上了车,一位先生出于 2020-11-23 …
依据下面的具体语境,填充对话,注意简明、得体。公共汽车上已没有座位。一位太太上来后,一位先生出于礼貌 2020-11-23 …
简短的""商英理赔信"""急急!经过仔细调查,确认每个纸箱都用防水纸与双层帆布清洁提单显示承运方接受 2020-11-28 …