结构体和链表编程题目
结构体练习题
算并输出每个人的学号和平均成绩。
2.已知链表结点结构如下,假设动态链表已经建立,请编写删除给定学号的结点的函
数。(只编写删除子函数即可)
3.编写函数实现动态链表的建立。链表结点结构如下,要求在主函数中将你所建立的链
表输出到屏幕上。
4.有10个学生,每个学生的信息包括学号、姓名、3门课的成绩,从键盘输入10个学
生数据存入结构体数组中,要求输出个人总分最高的学生的信息(包括学号、姓名、3门课成绩、总分)。
5.链表的结点数据类型如下:
struct node{
int data;
struct node *next;
};
链表的建立和输出函数如下,编写将第i个结点删除的函数,并完善主函数,调试运行整个程序。
struct node *creat()
{ int x;
struct node *h,*s,*r;
h=(struct node *)malloc(sizeof(struct node));
r=h;
scanf("%d",&x);
while(x!=-1)
{ s=(struct node*)malloc(sizeof(struct node));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return h;
}
void print(struct node *h) //打印函数
{ struct node *p;
p=h->next;
if(p==NULL)
printf("list is empty!");
else
{ while(p!=NULL)
{ printf("%4d",p->data);
c程序设计 第九章 结构体
一、概念题
二、判断题
1. 结构体中的成员不可以单独使用(F)。
2. 成员名可以与程序中的变量名相同,二者不代表同一对象(T)。
3. 不能将一个结构体变量作为一个整体进行输入输出(T)。
4. 结构体变量所占内存长度是各成员占的内存长度之和(T)。
5. 结构体中的成员不可以单独使用(F )。
9. 一个结构体变量的指针就是该变量所占内存段的起始地址(T)。
10. 用结构体变量作实参,形参也必须是同类型的结构体变量(T )。
三、单选题
1. 设变量定义如下,则对其中的结构分量num正确的引用是( )。
struct student {
int num ;
char name[20];
float score;
} stud[10];
A. stud[1].num=10;
B. student.stud.num=10;
C. struct.stud.num=10;
D. struct student.num=10;
2. 已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是()。
struct worker
{
int no;
char name[20];
char sex;
struct birth{ int day; int month; int year;}a;
};
struct worker w;
A day=25;month=10;year=1993;
B w.birth.day=25; w.birth.month=10; w.birth.year=1993;
C w.day=25; w.month=10; w.year=1993;
C语言结构体使用之链表
C语⾔结构体使⽤之链表
⽬录
⼀、结构体的概念
⼆、结构体的⽤法
三、结构体数组和指针
四、结构体指针
五、包含结构体的结构体
六、链表
七、静态链表
⼋、动态链表
⼀、结构体的概念
⽐如说学⽣的信息,包含了学⽣名称、学号、性别、年龄等信息,这些参数可能有些是数组型、字符型、整型、甚⾄是结构体类型的数据。虽然这些都是不同类型的数据,但是这些都是⽤来表达学⽣信息的数据。
⼆、结构体的⽤法
1、struct 结构体名称访问⽅法:结构体变量名.成员
{undefined
成员1;
成员2;
};
2、 typedef struct
{undefined
成员1;
成员2;
}结构体名称;
在中⼤型产品中⼀般⽤第2种,因为结构体多了以后通过别名的⽅式定义结构体变量能够⼤⼤提⾼代码可读性。
三、结构体数组和指针
1、直接⽤struct声明⼀个结构体,然后在定义结构体数组,struct 结构体名称数组名[数组⼤⼩]
2、⽤typedef struct声明⼀个结构体,并且为结构体重命名,通过重命名的⽅法定义结构体数组。结构体重命名数组名[数
组⼤⼩]
四、结构体指针
只要是存储在内存中的变量或者数组或函数编译器都会为他们分配⼀个地址,我们可以通过指针变量指向这个地址来访问地址⾥⾯的数,只要把指针变量定义成同数据类型就可以指向了,⽐如说要指向字符型变量就定义字符型指针变量,所以我们也可以定义结构体类型指针来指向它。
1、直接⽤struct声明⼀个结构体,然后在定义结构体指针,struct 结构体名称 *结构体指针变量名
2、⽤typedef struct声明⼀个结构体,并且为结构体重命名,通过别名的⽅式定义结构体指针。结构体别名 *结构体指针变
C++题目作业7-8
C++题目作业7-8
HZAU-专业C++作业7-8
一、判断题
1.结构体的定义不为它分配具体的内存空间。T (2分)
2.C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。T
3.允许用户将不同类型的数据组合成一个有机的整体,这些数据互相联系;这种数据结构称为结构体(structure)。(2分)T
4.struct是关键字,不能省略:“结构体名”用作结构体类型的标志,是用户定义的标识符。(2分)T
5.结构体变量所占的内存长度等于每个成员长度之和(字符型特殊)。T (2分)
6.结构体中的成员(域),不可以单独使用。F (2分)
7.结构体变量能整体进行输入输出。F (2分)
8.如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级的找到最低一级的成员。只能对最低一级的成员进行赋值、存取或运算。T
9.把整个结构体变量传递给函数默认情况下采取的是“值传递”方式,要求形参也必须是同类型的结构体变量。当然也可由程序员控制用指针参数或引用参数传递。(2分)T
10.结构体变量的各个初值用花括号{、}括起来,花括号内各个成员变量的值之间用分号分隔,其值必须与成员变量一一对应,且数据类型应与成员变量一致。F
11.宏替换时先求出实参表达式的值,然后带入形参运算求值。F (2分)
12.宏替换不存在类型问题,它的参数也是无类型的。T (2分)
13.在C++语言标准库头文件中包含了许多系统函数的原型声明,因此只要程序中使用了这些函数,则应包含这些头文件。T (2分)
14.H头文件只能由编译系统提供。F (2分)
c++编程竞赛题
c++编程竞赛题
一、链表操作题
题目:链表反转之最短路徑求解
【题目描述】
给定一个链表表示的图,其中每个节点包含一个整数值和一个指向下一个节点的指针。请实现一个函数,输入起点和终点,返回从起点到终点最短路径的长度。
【题目要求】
实现一个函数 `shortestPathLength`,输入起点 `start` 和终点 `end`,返回从 `start` 到 `end` 的最短路径长度。
【输入输出格式】
输入格式为三个整数 `n`、`m` 和起点 `start`,表示链表中的节点数和路径长度。接下来 `m` 行,每行两个整数 `a` 和 `b`,表示链表中从 `start` 到节点 `a` 的路径长度和节点 `a` 到终点的路径长度。
输出格式为整数,表示从起点到终点的最短路径长度。
【提示】
链表中的节点数不超过 1000,路径长度不超过 1000。
【样例输入】
3 2 3
4 5
1 2 3 1
【样例输出】
2
【解题思路】
本题主要考察链表操作和最短路径求解。首先需要将链表反转,
使得起点是链表的头节点。然后使用 Dijkstra 算法求解最短路径长度。具体实现时需要注意链表的存储方式,可以使用结构体数组来表
示链表节点。在 Dijkstra 算法中,需要使用一个集合来记录已经访
问过的节点,避免重复访问。同时需要使用一个队列来存储待访问的
节点,按照距离从小到大的顺序依次访问。具体实现时可以使用 C 标
准库中的相关函数来实现队列和集合的操作。最后根据题目要求输出
结果即可。
二、数组操作题
题目:寻找重复子数组之最大长度
第8章结构体(答案)
第8章结构体(答案)
第8章结构
⼀、选择题
1、设有以下说明语句
struct ex
{ int x;
float y;
char z;
}example;
则下⾯的叙述中不正确的是(B)
A)struct是结构体类型的关键字B)example是结构体类型名
C)x,y,z都是结构体成员名D)struct ex是结构体类型
2、设有以下说明语句
typedef struct
{
int a;
char c[10];
} ST;
则下⾯的叙述中正确的是(B)
A)ST是结构体变量名B)ST是结构体类型名
C)typedef struct是结构体类型名D)struct是结构体类型名
3、有以下定义,能输出字母M的语句是(D)
struct person
{
char name[9];
int age;
};
struct person class[10]={ “ohu”,17, “Paul”,19,“Mary”,18,“Adam”,16 } A)printf(“%c\n”,class[3].name[0]);
B)printf(“%c\n”,class[3].name[1]);
C)printf(“%c\n”,class[2].name[1]); D)printf(“%c\n”,class[2].name[0]);
4、以下对结构体类型变量的定义中,不正确的是( B )
A)typedef struct B)#define AA struct aa
{int n; AA{int n;
C)struct aa D)struct
{int n;float m; {int n;
C++上机题目及答案1
void resort(int *x, int n);
void sort(int *a,int n);
void main(){
int a[10]={0};
cout<<"请输入十个数据:";
for(int i=0;i<10;i++)cin>>a[i];
cout<<"数组原始数据为:";
void main(){
point a,b;
cout<<"请分别输入两个点的坐标(x,y,z):\n";
cin>>a.x>>a.y>>a.z;
cin>>b.x>>b.y>>b.z;
cout<<"a点的坐标:"<<a.x<<','<<a.y<<','<<a.z<<'\n';
cout<<"b点的坐标:"<<b.x<<','<<b.y<<','<<b.z<<'\n';
算法设计基础题目(1)
算法设计基础题目(1)
1、定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日
在本年中第几天。注意本题一定要定义结构体变量,否则本实验成绩无效。
Input
输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在1 至12 之间,
不应该超过这个范围)否则输出Input error!
Output
输出一个整数.既输入的日期是本月的第几天。
Sample Input
1985 1 20
2006 3 12
Sample Output
20
71
2、假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
Input
输入数据有多个测试实例,每个测试实例的第一行包括两个整数n 和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。
Output
对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。
Sample Input
2 2
5 10
10 20
Sample Output
7.50 15.00
7.50 15.00
1
3、构建简单的手机通讯录(最多容纳250名联系人的信息),通讯录中联系人的基本信息包括:姓名、手机号码、办公室电话、邮箱地址、住址等信息。实现根据姓名查询联系人功能。
第九章习题及答案
第九章习题
一、选择题
1.以下选项中不能正确把cl定义成结构体变量的是( )
A)typedef struct B)struct color cl
{ int red; { int red;
int green; int green;
int blue; int blue;
} COLOR; COLOR cl; };
C)struct color D)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
} cl; } cl;
2.有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是( )
A) (p++)->num B)p->num C)(*p).num D)stu[3].age
3.有以下结构体说明、变量定义和赋值语句
struct STD
{char name[10];
int age;
char sex;
}s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是( )。
A)scanf(“%s”,s[0].name);B)scanf(“%d”,&s[0].age);
C)scanf(“%c”,&(ps->sex)); D)scanf(“%d”,ps->age);
第三讲 结构体习题
struct stu
{ int a; float b; }stutype;
则下面的叙述不正确的是。*
A)struct是结构体类型的关键字
B)struct stu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
6.C语言结构体类型变量在程序执行期间。
13.以下结构类型可用来构造链表的是。*
A)struct aa{ int a;int * b;};
B)struct bb{ int a;bb * b;};
C)struct cc{ int * a;cc b;};
D)struct dd{ int * a;aa b;};
14.以下程序的输出结果是。**
amovep(int*p, inta[3][3],int n)
day = 1; t.day = 1;
C) t.birthday.year = 1980; D) t-> birthday.year = 1980;
t.birthday.month = 5; t-> birthday.month = 5;
t.birthday.day = 1; t-> birthday.day = 1;
func(struct n b)
{b.x=20; b.c=’y’; }
C语言_实验九、结构体程序设计
实验九、结构体程序设计
一、实验目的
1.掌握结构、结构数组、结构指针的定义及使用;
2.掌握简单的链表的定义及使用;
3.掌握共用体和枚举类型的定义及使用;
4.掌握文件的简单的定义、打开、写、关闭等操作。
二、实验内容
1.[题目内容]某考点建立一个考生人员情况登记表、表格内容如下:
1)根据上表正确定义该表格内容要求的数据类型。
2)分别输入各成员项数据,并打印输出(为简便,假设有3个考生)编
程序,然后上机调试运行程序。
2.[题目内容]某单位进行选举,有5位候选人:zhang、wang、li、zhao、liu。编写一个统计每人得票数的程序。要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
3.[题目内容]设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄。
4.[题目内容]定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写6个函数分别用于:(1)使用结构体数组,输入全班10名学生的上述信息;
(2)计算每一个学生的总分、平均分;
(3)计算每一门课程的平均分;
(4)查找成绩有不及格的学生信息;
(5)按学生成绩总分降序排序;
(6)输出全班学生的学号、总分及名次。
5.[题目内容]利用上一题的结构类型,创建包含10个结点的无序链表。编写5个函数分别实现下述功能(参考前面第三部分内容):
(1)显示链表;
(2)添加结点;
(3)删除结点;
(4)计算每位学生的总分;
(5)按英语成绩排序。
结构体与联合体习题(含答案)
2013年结构体与联合体习题
选择题
1、若程序中有以下的说明和定义:
struct abc
{ int x;char y; } 花括号后少了分号。
struct abc s1,s2;
则会发生的情况是______。
错
2
3
4
A) 4 B) 7 C) 102 D) 103
5、以下叙述中错误的是_________。
A)可以通过typedef增加新的类型
B)可以用typedef将已存在的类型用一个新的名字来代表
C)用typedef定义新的类型名后,原有类型名仍有效
D)用typedef可以为各种类型起别名,但不能为变量起别名
6、有以下程序段
typedef struct NODE
{ int num; struct NODE *next;
} OLD;
以下叙述中正确的是
A)以上的说明形式非法B) NODE是一个结构体类型
C) OLD是一个结构体类型D) OLD是一个结构体变量
7、以下选项中不能正确把cl定义成结构体变量的是______。
1.
2.
3.
4.
A) 1 B) 2C) 3 D) 4
8、设有以下语句
typedef struct S
{ int g; char h;} T;
则下面叙述中正确的是______。
A)可用S定义结构体变量
B)可以用T定义结构体变量
C) S是struct类型的变量
D) T 是struct S 类型的变量
9、设有如下说明
typedef struct ST
{long a;int b;char c[2];} NEW;
则下面叙述中正确的是_____。
A)以上的说明形式非法
B) ST 是一个结构体类型
c语言构造学生结构体找出不及格学生和平均分90分链表
c语言构造学生结构体找出不及格学生和平均分90分
链表
标题:探寻C语言中构造学生结构体,找出不及格学生和平均分90分的链表
一、引言
在C语言的学习过程中,构造学生结构体是一个重要且基础的概念。
在这篇文章中,我们将通过C语言的学生结构体,找出不及格学生和
得到平均分90分的链表,从而加深对结构体的理解和实践能力。
二、背景知识
1. C语言中的结构体
在C语言中,结构体是一种构造数据类型,可以将不同类型的数据组
合在一起,形成一个新的数据类型。通常用于描述具有多个属性的实体,如学生、员工等。通过结构体,可以更加灵活地组织和处理数据,提高程序的可读性和可维护性。
2. 链表的概念
链表是一种常见的数据结构,它由一组节点组成,每个节点包含数据
和指向下一个节点的指针。链表可以用来表示各种数据集合,例如学
生成绩,员工信息等。在C语言中,通过结构体和指针的组合,可以
很好地实现链表的功能。
三、构造学生结构体
为了实现找出不及格学生和得到平均分90分的链表的功能,首先需要构造学生结构体。一个简单的学生结构体可以包含学生的尊称、学号、各科成绩等信息。例如:
```c
typedef struct student {
char name[20];
int id;
float score;
struct student* next;
} Student;
```
以上代码中,我们定义了一个名为Student的结构体,包含了学生的
尊称、学号、成绩和指向下一个学生的指针。
四、找出不及格学生
接下来,我们可以通过构造学生结构体,实现找出不及格学生的功能。对于给定的学生链表,可以使用循环遍历每个学生,判断其成绩是否
c++题库(简版)
第1题(10。0分) 题号:664
题目:已知有结构体类型定义:
struct node
{ int data;
struct node *nextPtr;
};
编写函数void printList(struct node * head),对head指向
的单向链表,找出data成员值为正数的所有结点,输出这些结
点在链表中的序号(第1个结点序号为1)和data成员值。
答案:
void printList(struct node * head)
{
struct node *p;
int i=1;
p=head;
while(p!=NULL)
{
if(p->data > 0) cout<<"\n数据:”〈〈p->data〈〈" 序号:”<<i;
i++;
p=p—〉nextPtr;
}
}
第2题(10.0分)题号:693
题目:编写一段程序,计算输入流input中第一个$之前的
字符数目,存入count变量。
答案:while (input.get(ch)&& ch != '$’)
count++;
第3题(10。0分)题号:592
题目:用“辗转相除方法"计算两个数 x,y 的最大公约
数
答案:
n=x%y;
while(n!=0)
{x=y;y=n;n=x%y;}
第4题(10。0分) 题号:708
题目:从文件中读入n个字符串,将其中以字母A开头的字符串复制到二维字符数组str1中。
答案:for(i=0;i〈n;i++)
{
if((strcmp(str[i],”A”)〉=0)&&(strcmp(str[i],”B")〈0))
河南理工大学考研数据结构真题
河南理工大学考研数据结构真题
考试科目:数据结构
考试时间:120分钟
总分:100分
题目一:单链表逆置(30分)
给定一个单链表,设计一个算法将该链表逆置。
题目要求:
1.定义链表结构体,包含数据域和指针域。
2. 设计函数`reverseList`,实现链表逆置,并返回逆置后的链表头节点。
题目二:二叉树遍历(40分)
给出二叉树的先序遍历序列和中序遍历序列,设计一个算法还原该二叉树,并输出后序遍历序列。
题目要求:
1.定义二叉树结构体,包含数据域和左右子树指针域。
2. 设计函数`reconstructTree`,实现二叉树的还原,并返回后序遍历序列。
题目三:最小生成树(30分)
给定一个无向图,使用Prim算法或Kruskal算法实现最小生成树的求解,并计算最小生成树的权值。
题目要求:
1.图使用邻接矩阵表示,图的顶点数n不超过100,边数不超过n(n-
1)/2
2. 设计函数`minimumSpanningTree`,实现最小生成树的求解,并返回最小生成树的权值。
以上是一套典型的数据结构考研真题,考察了链表、二叉树和图算法方面的知识。在考试中,除了正确实现算法,还要注意编写规范的代码和进行必要的注释。希望以上内容对您有所帮助,祝您考试顺利!
结构体与链表习题附答案
结构体与链表习题附答案
一、选择题
1、在说明一个结构体变量时系统分配给它的存储空间是().A)该结构体中第一个成员所需的存储空间B)该结构体中最后一个成员所需的存储空间
C)该结构体中占用最大存储空间的成员所需的存储空间D)该结构体中所有成员所需存储空间的总和。
2.设有以下说明语句,则以下叙述不正确的是()
tructtu
{inta;floatb;}tutype;
A.truct是结构体类型的关键字
B.tructtu是用户定义的结构体类型
C.tutype是用户定义的结构体类型名
D.a和b都是结构体成员名
3、以下对结构体变量tu1中成员age的合法引用是()
#includetructtudent{intage;intnum;}tu1,某p;p=&tu1;
A)tu1->ageB)tudent.ageC)p->ageD)p.age
4、有如下定义:Structdate{intyear,month,day;};
Structworklit{
Charname[20];Chare某;
Structdatebirthday;}peron;
对结构体变量peron的出生年份进行赋值时,下面正确的赋值语句是()Aworklit.birthday.year=1978Bbirthday.year=1978Cperon.birthday .year=1958Dperon.year=1958
5、以下程序运行的结果是()#include”tdio.h”main()
{tructdate
{intyear,month,day;}today;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四阶段(结构体与链表)
1.对候选人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的
名字,要求最后输出各候选人得票结果。本题应该先定义一个结构体,结构体中包含姓名和票数两个变量。
2.建立一个描述个人信息的结构体,包括ID号,姓名,性别,年龄等信息,定
义该结构体数组并初始化,将按年龄分成三个部分(小于18岁,18-60岁,大于60岁),每一部分放在一起打印。
3.建立一个描述个人信息的结构体,包括ID号,姓名,性别,年龄等信息,定
义该结构体数组并初始化,将按年龄分成三个部分(小于18岁,18-60岁,大于60岁),然后定义一个该结构体的二维数组,二维数组的每一行按年龄分别存放同一部分的个人信息。
4.定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,
数学成绩,总分等信息,你可以定义该结构体的数组并初始化,总分可以通过程序获得,然后按总分为第一关键字,英语成绩为第二关键字将学生成绩信息从高到低排列并存到原数组中。(尽量不要定义新的数组)。
5.在屏幕上模拟显示一个数字式时钟(不要求1秒钟为频率)。结构体中应当定
义三个int变量,hour,minute,second。如何让second加1呢?这个可以使用延时程序,如:
Delay()
{
Int I,j;
For(i=0;i<1000;i++)
For(j=0;j<1000;j++)
{}
}
这个延时程序不一定是1秒,只要模拟一下数字时钟就可以了。同时,你可能要用到形式如printf(“%d\r”)的打印,”\r”表示打印时又重新回到本行开头处打印,因为你每更新一次数据时都需要打印,打印的位置没有变化才会像一个电子时钟。
6.设计一结构体,包括ID号(int型),名称(字符串),请定义该结构体的数
组,并给这些数组赋初值,根据ID号将数组进行排序,把ID从小到大排序,不能再定义新的数组。比如:数组的第一个元素的ID号放ID号最小的值,并将这个ID号对应的名称也放在第一个元素的名称中。
7.给定单链表头结点,删除链表中倒数第K个结点。请实现函数struct node*
del(struct node *head,int k);返回新链表的头结点。
8.请建立一单链表,并将该单链表形成环形链表。即将单链表的尾结点指向单
链表的头结点。
9.请动态建立一个双向链表。
10.假如双向链表的每个结点放一个整数,并且头结点到尾结点中的整数是从小
到大排列的,请向链表中按顺序插入一结点。
11.已知两个整数集合A和B,它们的元素值分别放在两个循环链表中。请设计
一种算法求这两个集合的并集,请将并集放在链表中,并从函数中返回链表的头结点。
12.一单链表中存在环,请找出链表上环的起点,例如有如下链表:
则c,a,s是一个循环链表,你需要找出起点结点C。
13.有两个单链表,判断这两个链表是否相交,如果相交,则打印出来相交的首
结点,如没相交则进行相应的提醒。(链表相交是指两个链表中有共同的结点)
H1
H1为:g,u,o,h,c,a,s
H2为:s,h,a,c,a,s
则它们相交的首结点是 c 结点,你应该找到这个结点,并将相交的结点全部打印(结点c及c后面的结点全是他们的相交结点)。
14.已知单链表中的数据含有三类字符(即:字母字符,数字字符和其他字符),
请写一函数,构造三个环形链表,使每个环形链表中只含同一类字符,且得用原来的结点空间作为这3个链表的结点空间,头结点可另辟空间
15.设单链表中存放n个字符(每个结点一个字符),请写一函数来判断该字符串
是否中心对称。例如abccba即为中心对称。
16.定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,
数学成绩,平均分,总分等信息。你可以定义该结构体的数组,先对数组进
行初始化,初始化的时候不要计算平均分和总分,你被要求写三个函数,一个函数计算平均分和总分,一个函数求出所有英语或数学成绩不合格的学生,最后一个函数根据总分进行排序,在主函数中,这三个函数按在顺序执行(先算平均分和总分,再求不成绩不合格的学生,最后排序),每个函数执行完之后,都需要打印函数执行后的结果。
17.定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,
数学成绩,平均分,总分等信息。然后创建一个静态链表,这题中你被要求写四个函数,一个函数计算平均分和总分,一个函数计算所有学生英语或数学成绩的平均分,并打印所有低于平均分的学生信息,这个函数需要通过从主函数中传递形参来决定计算英语平均成绩还是数学平均成绩,例如:count(struct stu *s,int n),我们可以定义当n=0时,计算英语平均成绩,当n=1时,计算数学平均成绩。一个函数查找所有英语成绩为某个值的学生,并打印学生信息(没有该值时,应该提醒没有该成绩的学生)。最后一个函数根据总分进行排序。同样,第个函数执行完之后,都需要打印函数执行后的结果。
18.设有N个人围坐一圈并顺时针方向从1到N编号,从第S个人开始进行1到
M报数,报数到第M个人时,此人出圈,再从他的下一个重新开始1到M的报数,如此进行下去直到所有人都出圈为止。现要打印出圈次序。请用环形链表实现。
19.假如一链表中的每个结点都放了一个只含小写字母的字符串,请写一个函数,函数功能是按字符串的大小从大到小排序(字母ASCII值越大,则字母越大)。
函数定义为:struct strnode *sort(struct strnode *head) 。例如:各结点分别放了my,name,is,deng,shui,fa。排序后应该为shui,name,my,is,fa,deng。
20.(图书管理系统)我们对于图书馆以后会买多少书是未知的,所以如果定义
数组就有可能在将来的某一天,数组的大小不够用,本题需要用动态链表做。
自己定义关于图书的结构体,该结构体包括:书号,书名,书类别(类别如通信,英语,计算机等),馆藏量,剩余量,本题需要的主要函数如下:初始化:程序运行之初,应该创建一个包含一定数量结点的链表。添加:当有新书进来时,需要创建一个结点,将新书信息存到这个结点当中,并将这个结点放在链表末尾。删除:删除指点信息的书目。排序:根据指定的关键字进行排序。查找:根据指定的要求进行查找。借书:将所借书的剩余量减1。
还书:将所还的书的剩余量加1。整个程序的菜单如下:
0.退出
0.返回上一级菜单(意思就是不想添加了,所以只有返回)
1.添加
1.添加图书
0.返回上一级菜单(意思同上)