解题思路:
只是为了记录代码,方便查阅
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
//创建一个管理结构体
typedef struct student
{
int number; //学号
int gread; //成绩
struct student *next; //后继指针
}Lnode;
//新节点函数,通过传入的节点个数来创建新节点个数
Lnode *Creat_NeWNode(int n)
{
Lnode *head = malloc(sizeof(Lnode)); //给头结点申请空间
head->next = NULL; //指针域
Lnode *q = head; //创建新指针指向头结点
Lnode *p; //创建新节点
for(int i = 0;i<n;i++)
{
p = malloc(sizeof(Lnode));//给新节点申请空间
scanf("%d%d",&(*p).number,&(*p).gread);//输入结构体元素
p->next = q->next;//插入新节点
q->next = p;
q = p;//更新q节点为p,方便后续插入
}
return(head);//最后返回头结点
}
//输出每个节点的信息
void output(Lnode *head)
{
Lnode *p = head->next;
Lnode *q;//用于释放结点,让数据输出(打印)后释放
while(p!=NULL)
{
printf("%d %d\n",p->number,p->gread);
q = p;
p = p->next;
free(q);//释放节点
}
}
void oreder(Lnode* l1,Lnode *l2)
{
Lnode *q; //定义一个指针
//有两个表,表a,表b,要让表a和表b连接在一起
q = l1;
l2 = l2->next;
while(q->next!=NULL)
{
q = q->next;
}//现在q指针指向表a的最后一个节点
q->next = l2;//让q指向表b的有效首元素节点,至此完成连接
q = l1->next;//让指针q指向表a的有效首元素节点
Lnode *min;//定义指针指向最小学号节点
int i; //定义变量保存最小学号
int n,g; //用于交换数据时候的临时变量
Lnode *p;//定义指针p,用于循坏时找到最小学号所在节点
for(;q!=NULL;q = q->next)
{
p = q;
i = p->number;
min = p;
for(;p!=NULL;p = p->next)
{
if(p->number<i)
{
i = p->number;
min = p;
}
}
n = q->number;//用n记录首元素节点的数据;
q->number = min->number;//将最小学号节点的元素赋值给首节点的元素
min->number = n;
g = q->gread;
q->gread = min->gread;
min->gread = g;
}
output(l1);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
Lnode *head1= Creat_NeWNode(n);;
Lnode *head2= Creat_NeWNode(m);;
oreder(head1,head2);
return 0;
}
0.0分
0 人评分
汽水瓶 (C语言代码)浏览:764 |
简单的a+b (C语言代码)浏览:583 |
Pascal三角 (C语言代码)格式错误浏览:550 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:1052 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:503 |
【金明的预算方案】 (C++代码)浏览:873 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:590 |
1013题解浏览:596 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1494 |
简单的a+b (C语言代码)浏览:542 |