1、编程实现:使用西数、菜单完成链表的以下操作: ①)以班级学生信息(学号 ,姓名,年龄等信息)为基础创建。 个链表;(至少保存5个学生信息) ②查找某 一个学生的信息(如输入某个学号或者姓名)并输出 查找结果
时间: 2023-04-25 15:06:21 浏览: 96
1、编程实现:
使用C语言、菜单完成链表的以下操作:
①)以班级学生信息(学号, 姓名, 年龄等信息)为基础创建一个链表;(至少保存5个学生信息)
②查找某一个学生的信息(如输入某个学号或者姓名)并输出查找结果。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义学生结构体
typedef struct student {
char id[10]; //学号
char name[20]; //姓名
int age; //年龄
struct student *next; //指向下一个节点的指针
} Student;
//创建链表
Student *createList() {
Student *head = NULL; //头节点指针
Student *p = NULL; //当前节点指针
int n = ; //学生数量
printf("请输入学生数量:");
scanf("%d", &n);
for (int i = ; i < n; i++) {
Student *node = (Student *) malloc(sizeof(Student)); //创建新节点
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", node->id);
printf("姓名:");
scanf("%s", node->name);
printf("年龄:");
scanf("%d", &node->age);
node->next = NULL; //新节点的指针域初始化为NULL
if (head == NULL) { //如果是第一个节点
head = node; //头节点指向新节点
} else { //如果不是第一个节点
p->next = node; //上一个节点的指针域指向新节点
}
p = node; //当前节点指向新节点
}
return head; //返回头节点指针
}
//查找学生信息
void searchStudent(Student *head) {
char keyword[20]; //关键字
int flag = ; //查找结果标志
printf("请输入要查找的学生的学号或姓名:");
scanf("%s", keyword);
Student *p = head; //从头节点开始查找
while (p != NULL) {
if (strcmp(p->id, keyword) == || strcmp(p->name, keyword) == ) { //如果找到了
printf("学号:%s\n", p->id);
printf("姓名:%s\n", p->name);
printf("年龄:%d\n", p->age);
flag = 1; //标志置为1
break; //退出循环
}
p = p->next; //指向下一个节点
}
if (flag == ) { //如果没有找到
printf("没有找到该学生!\n");
}
}
//主函数
int main() {
Student *head = createList(); //创建链表
int choice = ; //菜单选项
while (1) {
printf("\n1.查找学生信息\n");
printf("2.退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
searchStudent(head); //查找学生信息
break;
case 2:
exit(); //退出程序
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return ;
}
阅读全文