# include <stdio.h> # include <malloc.h> # include <stdlib.h> # include <stdbool.h> // # include <string.h> strcpy(q->name, "张三")typedef struct Student{char name[100];int id;struct Student * pNext; }Stu;Stu * Creat_list(); void Show_list(Stu *); bool bool_empty_list(Stu *); int length_list(Stu *); bool insert_list(Stu *, int); bool delete_list(Stu *, int); bool deleteID_list(Stu *, int);// 根据 学号 删除信息写不出来 void sort_list(Stu *);int main (void){Stu * pHead;pHead = Creat_list();Show_list(pHead);// insert_list(pHead,0); // delete_list(pHead,1); // deleteID_list(pHead, 1);printf("学生人数:%d位\n", length_list(pHead)); // sort_list(pHead);Show_list(pHead);return 0; } Stu * Creat_list(){Stu *pList;Stu * pHead = (Stu *) malloc(sizeof(Stu));int len;printf("请输入学生人数:");scanf("%d", &len);if(pHead->pNext == NULL || len == 0){printf("录入失败!\n");exit(-1);}pHead->pNext = NULL;pList = pHead;for (int i = 0; i < len; ++i){Stu * pNew = (Stu *) malloc(sizeof(Stu));printf("第%d名学生信息:\n", i+1);printf("姓名:");scanf("%s", pNew->name);printf("学号:");scanf("%d",&(pNew->id));pList->pNext = pNew;pNew->pNext = NULL;pList = pNew;}return pHead; } void Show_list(Stu * pHead){Stu * q = pHead->pNext;if(q != NULL){printf("学生信息如下:\n");} else{printf("无信息!");}while (q != NULL){printf("姓名:%s 学号:%d\n", q->name, q->id);q = q->pNext;}} bool bool_empty_list(Stu * pHead){if(pHead->pNext == NULL){printf("无信息,无法遍历!");return true;} else{return false;} } int length_list(Stu * pHead){int length = 0;Stu * q = pHead->pNext;while (q != NULL){length++;q = q->pNext;}return length; } bool insert_list(Stu * pHead, int pos){Stu * pNew = (Stu *) malloc(sizeof(Stu));int i = 0;Stu * q = pHead; // while执行几次 q = pHead 插入位置 // pos= 1,i= 0 0 q = pHead 0——1 pHead 后面 // pos= 2,i= 0,1 1 q = pHead->pNext 1——2 第 1 个后面 // pos= 3,i= 0,1,2 2 2——3 第 2 个后面while (q != NULL && i < pos-1){q = q->pNext;i++;}if(i <= 0 || q == NULL){printf("插入位置出错!error:%d\n", pos);return false;}printf("请录入插入学生信息:\n");printf("姓名:");scanf("%s", pNew->name);printf("学号:");scanf("%d",&(pNew->id));// q 后面插入 数据,插入位置是在 q 后面pNew->pNext = q->pNext;q->pNext = pNew;return true; } bool delete_list(Stu * pHead, int pos){int i = 0;Stu * q = pHead;while (q != NULL && i < pos-1){++i;q = q->pNext;}if(pos <= 0 || q == NULL){printf("删除位置出错!error:%d\n", pos);return false;} else{printf("删除成功,您删除的信息:姓名:%s 学号:%d\n", q->pNext->name, q->pNext->id);}Stu * p = q->pNext;q->pNext = q->pNext->pNext;free(p);return true; } void sort_list(Stu * pHead){int i;int j;Stu * p;Stu * q;int len = length_list(pHead);for (i = 0, p = pHead->pNext; i < len-1; ++i, p = p->pNext) {for (j = i+1, q = p->pNext; j < len; ++j, q = q->pNext) {if(p->id > q->id){Stu * t = p;p = q;q = t;}}}return; }
详细解决方案
数据结构//C——动态分配—离散存储(非循环单链表)2
热度:82 发布时间:2023-12-06 01:51:41.0
相关解决方案
- 算法效率(数据结构),该如何解决
- 用不同的方式实现了Huffman编码算法:1、使用链表结构。2、使用《数据结构》 ...
- [求助][求助]数据结构
- 数据结构 群 8126055
- 数据结构
- [求助]c语言+数据结构(单链表的操作)
- 请教《数据结构 》
- [求助]用c建立一个图(数据结构)遇到问题
- 编程-数据结构-急需帮助。
- [分享]数据结构(C语言版)[严蔚敏]视频教程
- [讨论] 是应该先看完C的教程还是应该先看完<<数据结构>>的书在看C的教程? ...
- 新近刚学习《数据结构》,大家给点意见!
- 数据结构,很无力~该怎么处理
- 数据结构,该怎么处理
- java 数据结构,该如何解决
- 数据库 数据结构 关于索引解决办法
- 数据结构,离散数学什么的重要吗。该怎么解决
- 通过这三张表查询 同时选修了‘微机原理’和‘数据结构’的学生姓名和学号,如何用SQL语言实现哦!
- 数据结构 - 线性表学习(php模拟)
- 数据结构—栈
- 【数据结构】【归并排序】
- 数据结构——4.双向链表复制
- mysql的架构、数据结构(内存+磁盘)以及一条sql的执行过程
- PostgreSQL实战(2)数据结构
- 数据结构 05——树与二叉树
- 数据结构——栈和队列(整理前)
- 数据结构——01数据结构绪论
- 数据结构——02算法简介
- 【考研】数据结构:红黑树(2022新增考点)
- 【考研】数据结构:并查集(2022 新增考点)