C++10.2链表

C++练习:链表

题目要求

建立一个10名学生信息的单向链表,
每个结点包括学号、姓名、性别、年龄,
采用插入排序按学号对其从小到大排列。

PS:我用的是visual studio 2019,所以不用加一些头文件

代码部分

#include<iostream>
using namespace std;

int main() {
	//建立一个10名学生信息的单向链表,每个结点包括学号、姓名、性别、年龄,采用插入排序按学号对其从小到大排列。
	struct student
	{
		int sno;
		char name[20];
		char sex[3];
		int age;
		struct student* next;
	}stu1, stu2, stu3, stu4, stu5, stu6, stu7, stu8, stu9, stu10;
	stu1 = { 5 ,"s05" ,"男" ,18 };
	stu2 = { 3 ,"s03","男", 18 };
	stu3 = { 2 ,"s02", "男", 18 };
	stu4 = { 4,"s04","男", 18 };
	stu5 = { 6,"s06", "男", 18 };
	stu6 = { 1 ,"s01" ,"男", 18 };
	stu7 = { 8 ,"s08" ,"男", 19 };
	stu8 = { 9, "s09", "男", 18 };
	stu9 = { 10, "s10", "男", 18 };
	stu10 = { 7 ,"s07" ,"男", 18 };
	struct student* s[10] = { &stu1,&stu2,&stu3,&stu4,&stu5,&stu6,&stu7,&stu8,&stu9,&stu10 };
	struct student* head = s[0];
	struct student* stu;
	struct student* sture = NULL;
	head->next = NULL;
	for (int i = 1; i < 10; i++) {

		stu = head;

		while (s[i]->sno > stu->sno && stu->next != NULL) {

			sture = stu;
			stu = stu->next;
		}
		if (s[i]->sno <= stu->sno) {
			if (stu == head) {
				head = s[i];
				head->next = stu;
			}
			else {
				sture->next = s[i];
				s[i]->next = stu;
			}

		}
		else
		{
			stu->next = s[i];
			s[i]->next = NULL;
		}

	}
	stu = head;
	cout << "*****************排序结果*****************" << endl;
	cout << "学号" << "\t" << "姓名" << "\t" << "性别" << "\t" << "年龄" << "\t" << endl;
	for (int n = 0; n < 10; n++) {
		cout << stu->sno<<"\t" << stu->name << "\t" << stu->sex << "\t" << stu->age << "\t" << endl;
		stu = stu->next;
	}
	return 0;
}

结果
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你可以使用C++来输入链表和输出链表。以下是一个简单的示例代码: ```cpp #include <iostream> // 链表节点的定义 struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(nullptr) {} }; // 输入链表 ListNode* inputLinkedList() { int n; std::cout << "输入链表节点个数: "; std::cin >> n; ListNode* head = nullptr; ListNode* curr = nullptr; std::cout << "输入链表节点值: "; for (int i = 0; i < n; i++) { int val; std::cin >> val; ListNode* newNode = new ListNode(val); if (head == nullptr) { head = newNode; curr = newNode; } else { curr->next = newNode; curr = curr->next; } } return head; } // 输出链表 void outputLinkedList(ListNode* head) { std::cout << "链表节点值: "; while (head != nullptr) { std::cout << head->val << " "; head = head->next; } std::cout << std::endl; } int main() { ListNode* head = inputLinkedList(); outputLinkedList(head); return 0; } ``` 在这个示例中,我们首先定义了一个名为 `ListNode` 的结构体,用于表示链表的节点。然后,我们编写了两个函数 `inputLinkedList` 和 `outputLinkedList` 分别用于输入和输出链表。 在 `inputLinkedList` 函数中,我们首先要求用户输入链表节点的个数。然后,我们使用一个循环来读取每个节点的值,并将其插入链表中。最后,函数返回链表的头节点。 在 `outputLinkedList` 函数中,我们遍历链表并输出每个节点的值。 在 `main` 函数中,我们首先调用 `inputLinkedList` 函数来输入链表,然后调用 `outputLinkedList` 函数来输出链表的节点值。 你可以根据自己的需要修改代码,并根据输入和输出格式进行相应的调整。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug-cq2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值