结构体:搜索链表

结构体:搜索链表_第1张图片

#include
#include
using namespace std;
struct Student //创建结构体Student
{
	int number; //学号
	char name[20]; //姓名
	float Chinese, Math, English; //成绩语数英
	Student* next; //下一个节点
};
Student* CreateList() //创建链表
{
	Student* head = NULL, * p; //head为头指针,p为当前节点指针
	p = head = new Student; //开辟存储空间
	do {
		//输入第一个学生的学号、姓名、语数英成绩
		cin >> p->number >> p->name >> p->Chinese >> p->Math >> p->English;
		//若学号不存在,跳出循环
		if (p->number == 0) break;
		p->next = new Student;  //为下一个节点开辟存储空间
		p=p->next; //p指向下一个节点
	} while (true);
	p->next = NULL; //最后一个节点时,它的下一个节点为空
	return head; //返回头指针
}
Student* Search(Student* head, int keynumber) //搜索函数,搜索某个学生
{
	Student* p = head; //从头开始比对
	while (p->next != NULL) 
	{
		if (p->number == keynumber) return p; //找到该学生则返回指针p
		p=p->next; //若未找到,进行下一次比对
	}
	return NULL; //全部比对完还未找到,返回空指针
}
void print(Student* p) //打印函数
{
	if (p != NULL) //指针p不为空,即找到该学生,输出该学生的信息
	{
		cout << p->number << " " << p->name << " ";
		cout << fixed << setprecision(1) << p->Chinese << " " << p->Math << " " << p->English << endl;
	}
	else //指针p为空,即找不到该学生,输出没有该学生
		cout << "No such person" << endl;
}
int main()
{
	Student* stu; //创建成员
	stu = CreateList();  //调用链表函数
	int keynumber;  //需要搜索的学生
	cin >> keynumber;
	Student* p = Search(stu, keynumber); //调用搜索函数
	print(p); //调用打印函数
	return 0;
}

结构体:搜索链表_第2张图片

你可能感兴趣的:(链表,c++,算法)