早教吧 育儿知识 作业答案 考试题库 百科 知识分享

单链表操作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");
}
看了单链表操作1.从键盘输入顺序任...的网友还看了以下:

一只小虫落在数轴上的某点P0,第一次从Po向左跳1个单位长度到P1,第二次从P1向左跳2个单位长度  2020-04-27 …

一只小虫落在数轴上某点P0处第一次从P0向左跳1个单位到P1,第二次从P1向右跳2个单位到P2,第  2020-05-19 …

一个跳搔在一条直线上从o点开始,第一次向右跳1个单位,紧接着第2次向左跳2个单位,第3次向右条3个  2020-06-21 …

看图填空(1)一共有种动物.从左往右数,是第个.从右往左数,是第个,是第个.(2)把从左往右数的前  2020-06-26 …

两个小朋友玩跳棋游戏,游戏的规则是,先画一条数轴,棋子落在数轴的原点k0,第一步从k0向左跳一个单  2020-06-27 …

两个小朋友玩跳棋游戏游戏规则是:先画一根数轴,棋子落在数轴上Ko点,第一步从Ko点向坐跳1个单位到  2020-06-27 …

电子跳蚤从数轴上的某点Mo开始跳动,第1步从Mo向左跳1个单位到M1,第2步从M1向右跳2个单位到  2020-06-29 …

观察下列单项式:,你能写出第个单项式吗?并写出第2005个单项式。为了解决这个问题,我们不妨从系数  2020-07-31 …

两个小朋友玩跳棋游戏,游戏规则是:先画一根数轴,棋子落在数轴上Ko点,第一步从Ko点向坐跳1个单位到  2020-11-22 …

动物乐园解决问题,相信你是最棒的!(1)这一排共有只小动物.(2)你最喜欢的动物是,从左数它是第个,  2020-11-24 …