已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
2017-08-10 11:14
531 查看
#include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct student) #define NULL 0 int n=0; struct student { int num; char name[10]; struct student *next; }; struct student *creat(void){ //创建链表函数 struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(LEN); head=NULL; scanf("%d %s",&p1->num,p1->name); while(p1->num!=0){ n++; if(n==1){head=p1;} else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf("%d %s",&p1->num,p1->name); } p2->next=NULL; n=0; return head; } struct student *ronghe(struct student *p1,struct student *p2){ //链表合并函数 struct student *p=p1; while(p1->next!=NULL) p1=p1->next; p1->next=p2; return p; } void paixu(struct student *p){ //链表排序函数 char tname[20]; int tnum,k=0,i=1; struct student *p1; p1=p; while(i!=0) { while(p1->next!=NULL){ if(p1->num>p1->next->num) { tnum=p1->num; p1->num=p1->next->num; p1->next->num=tnum; strcpy(tname,p1->name); strcpy(p1->name,p1->next->name); strcpy(p1->next->name,tname); k++; } p1=p1->next; } p1=p; if(k>0){k=0;} else i=0; } } void print(struct student *p){ //打印链接函数 while(p!=NULL){ printf("%d %s\n",p->num,p->name); p=p->next; } } int main() { struct student *p1=creat(); struct student *p2=creat(); struct student *p=ronghe(p1,p2); paixu(p); print(p); }
相关文章推荐
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并。按学号升序排列.
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 已有 a、b 两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按成绩升序排列。
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- P318_118 合并两个链表,并按照学号升序排列。用类冒泡排序法对链表进行排序
- 将两个升序排列的单链表合并为一个降序排列的单链表且不增加新的结点
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据
- 编写程序:建立一个学生数据链表,每个节点的信息包括如下内容:学号,姓名,性别年龄专业。对链表做如下处理。输入一个学号(专业),如果链表中的节点包含此学号(专业),则删去该结点。
- 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。
- 合并两个已有序(升序)链表的操作!
- (c++)有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 将两个递增的链表合并成一个递减的链表(相同的元素只留下一个),并要求利用原表结点
- 编写一个程序,已有若干学生的数据,包括学号,姓名,成绩,要求输出这些学生的数据并计算出学生人数和平均成绩
- 习题 9.5 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。