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

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

下列有关化学键与晶体的说法中,不正确的是()A.离子晶体的晶格能越大,离子晶体的熔点越高B.离子化  2020-05-17 …

下列有关化学键与晶体说法中,不正确的是()A.离子晶体的晶格能越大,离子晶体的熔点越高B.共价键的  2020-05-17 …

氰分子成键方式的问题氰分子中存在两个π44大π键碳碳之间也形成了两个派键以及Sp轨道重合的西格玛键  2020-06-06 …

从实验测得不同物质中氧一氧之间的键长和键能的数据:其中的x和y的键能数据尚未测定,但可根据规律性推导  2020-11-03 …

关于键长、键能和键角,下列说法不正确的是()A.键角的大小与键长、键能的大小无关B.键长的大小与成键  2020-11-17 …

如图表示H2+Cl2=2HCl反应中能量变化的理论分析示意图,下列说法正确的是()A.此反应生成物的  2020-11-23 …

下图表示某种分子结构的电键图,大黑点表示从1~10号的原子实(原子实指原子除去最外层电子后的剩余部分  2020-11-26 …

如图是某有机物分子中C、H、O、N四种原子的成键方式示意图(短线表示单键或者双键).下列关于该有机物  2020-11-26 …

单链表操作1.从键盘输入顺序任意的5个整数,生成第一个有序单链表,将该链表输出显示。2.再从键盘输入  2020-12-05 …

从实验测得不同物质中O-O键之间的键长和键能的数据如下其中x、y的键能数据尚未测定,但可根据规律性推  2021-01-05 …