有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
来源:互联网 发布:李红涛 浙江大学知乎 编辑:程序博客网 时间:2024/05/23 02:02
有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct student
{
int num;
float score;
struct student *next;
}STU;
STU *create()
{
int i;
STU *p,*head=NULL,*tail=head;
for (i=0;i<N;i++)
{
p=(STU *)malloc(sizeof(STU));
scanf("%d%f",&p->num,&p->score);
p->next=NULL;
if (p->num<0)
{
free(p);
break;
}
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
}
return head;
}
void output(STU *p)
{
while (p!=NULL)
{
printf("%d/t%.2f/n",p->num,p->score);
p=p->next;
}
}
STU *link(STU *p1,STU *p2)
{
STU *p,*head;
if (p1->num<p2->num)
{
head=p=p1;
p1=p1->next;
}
else
{
head=p=p2;
p2=p2->next;
}
while (p1!=NULL&&p2!=NULL)
{
if (p1->num<p2->num)
{
p->next=p1;
p=p1;
p1=p1->next;
}
else
{
p->next=p2;
p=p2;
p2=p2->next;
}
}
if(p1!=NULL)
p->next=p1;
else
p->next=p2;
return head;
}
int main(int argc, char *argv[])
{
STU *a,*b,*c;
printf("/n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)/n");
a=create();
printf("/n请输入链表b的信息,学号小于零时结束输入:格式(学号 成绩)/n");
b=create();
printf("/n链表a的信息为:/n");
output(a);
printf("/n链表b的信息为:/n");
output(b);
c=link(a,b);
printf("/n合并后的链表信息为:/n");
output(c);
return 0;
}
#include <stdlib.h>
#define N 10
typedef struct student
{
int num;
float score;
struct student *next;
}STU;
STU *create()
{
int i;
STU *p,*head=NULL,*tail=head;
for (i=0;i<N;i++)
{
p=(STU *)malloc(sizeof(STU));
scanf("%d%f",&p->num,&p->score);
p->next=NULL;
if (p->num<0)
{
free(p);
break;
}
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
}
return head;
}
void output(STU *p)
{
while (p!=NULL)
{
printf("%d/t%.2f/n",p->num,p->score);
p=p->next;
}
}
STU *link(STU *p1,STU *p2)
{
STU *p,*head;
if (p1->num<p2->num)
{
head=p=p1;
p1=p1->next;
}
else
{
head=p=p2;
p2=p2->next;
}
while (p1!=NULL&&p2!=NULL)
{
if (p1->num<p2->num)
{
p->next=p1;
p=p1;
p1=p1->next;
}
else
{
p->next=p2;
p=p2;
p2=p2->next;
}
}
if(p1!=NULL)
p->next=p1;
else
p->next=p2;
return head;
}
int main(int argc, char *argv[])
{
STU *a,*b,*c;
printf("/n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)/n");
a=create();
printf("/n请输入链表b的信息,学号小于零时结束输入:格式(学号 成绩)/n");
b=create();
printf("/n链表a的信息为:/n");
output(a);
printf("/n链表b的信息为:/n");
output(b);
c=link(a,b);
printf("/n合并后的链表信息为:/n");
output(c);
return 0;
}
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 已有 a、b 两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按成绩升序排列。
- 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。
- P318_118 合并两个链表,并按照学号升序排列。用类冒泡排序法对链表进行排序
- 有两个链表a和b,设结点中包含学号和姓名,从a链表中删除和b链表中相同学号的结点
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- 将两个升序排列的链表合并后升序排序打印.
- 对一个存储学生信息的单向链表,按照学号升序对链表进行排序,每个节点包含了一个学生ID
- 合并两个升序链表
- 合并两个已有序(升序)链表的操作!
- 在block按学号的升序和降序排列;按姓名的升序和降序排序,按年龄的升序和降序排列
- 两个升序单向链表的合并
- 向升序排列的单链表中插入一个值,要求插入后仍为升序链表
- 编写程序:建立一个学生数据链表,每个节点的信息包括如下内容:学号,姓名,性别年龄专业。对链表做如下处理。输入一个学号(专业),如果链表中的节点包含此学号(专业),则删去该结点。
- C语言合并两个带头节点升序排列链表
- 建立一个链表,每个结点数据包括:学号、姓名,性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
- (三)、使用HighCharts创建第一个图表实例
- Spring事务--非注解--持久层|业务层
- 通过重写Adapter实现多选的ListView
- http协议头文件的控制信息
- [Darktable]dt源码分析(未完)
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- rmn190: good articale about hibernate source code (Total 27)
- perl正则表达式中文问题
- 职场十大潜规则
- 40条PHP代码的优化技巧
- war3联机对战原理以及T人挂原理简述
- COM(VB/VBA/Script)利用类型化契约的服务标记调用WCF服务的方式
- OMAPL138的timer
- 数据库学习