链表
来源:互联网 发布:各班级出勤率数据图表 编辑:程序博客网 时间:2024/05/17 04:08
#include <stdlib.h>
#include <string.h>typedef struct student{ char name[20]; int score; struct student * next; }STU;// 任务一、创建带头结点的链表 // 问题描述:// 编写函数,创建带头结点的链表。函数原型为STU *createdList(void)。(返回值为链表的头结点地址。)STU * createdList(void){ STU * pStu = (STU *)malloc(sizeof(STU)); strcpy(pStu->name, ""); pStu->score = 0; pStu->next = NULL; return pStu;}// 任务二、在链表末尾添加新的结点 // 问题描述:// 编写函数,将新的学生信息添加到该链表的末尾。函数 原型为int insertRecordFromBack(STU *aHead, char *aName, int score)。//(STU *aHead是链表的头指针,char *aName是要插入学生的名字,int score是要插入学生的分数。)添加成功返回值为1,否则为0。int insertRecordFromBack(STU * aHead, char * aName, int score){ STU * pNewStu = (STU *)malloc(sizeof(STU)); if(pNewStu == NULL) return 0; strcpy(pNewStu->name, aName); pNewStu->score = score; pNewStu->next = NULL; while(aHead->next != NULL)<span style="white-space:pre"></span> aHead = aHead->next; aHead->next = pNewStu; return 1;}// 任务三、删除链表中指定的结点 // 问题描述:// 编写函数,实现将指定的学生信息从链表中删除的功 能。函数原型为int deleteRecordFromList(STU *aHead, char *aName)。//(STU *aHead是链表的头指针,char *aName代表要删除学生的名字。)删除成功返回值为1,否则为0。int deleteRecordFromList(STU * aHead, char * aName){ STU * pTemp = NULL; int nRtn = 0; // 此链表头结点数据为空,所以跳过 while(aHead->next != NULL) { if(strcmp(aHead->next->name, aName) == 0) { pTemp = aHead->next; aHead->next = pTemp->next; free(pTemp); pTemp = NULL; nRtn = 1; // 不考虑存在多个符合条件节点时,可在此处直接return; } else { aHead = aHead->next; } } return nRtn;}// 任务四 、 在链表中查找节点并修改该结点 // 问题描述:// 编写函数,按照学生姓名在链表中查找学生个人信息,找到后将该生的成绩修改为新成绩, // 函数原型为int findAndEdit(STU *aStu, char *aName, int aScore)。// (STU *aHead代表链表的头指针,char *aName代表要查找学生的名字。int aScore代表该学生的新成绩)// 任务要求:// 找到该学生的个人信息并修改成功返回1,未找到返回 0。int findAndEdit(STU * aHead, char * aName, int aScore){ // 此链表头结点数据为空,所以跳过 while(aHead->next != NULL) { if(strcmp(aHead->next->name, aName) == 0) { aHead->next->score = aScore; return 1; } else aHead = aHead->next; } return 0;}void printfList(STU * aHead){ while(aHead->next != NULL) { printf("%s %d\n", aHead->next->name, aHead->next->score); aHead = aHead->next; } return;}int main(void){ STU * stu = createdList(); insertRecordFromBack(stu, "zhangsan", 80); insertRecordFromBack(stu, "zhangsi", 83); insertRecordFromBack(stu, "zhangwu", 82); insertRecordFromBack(stu, "zhangsan", 81); insertRecordFromBack(stu, "zhangliu", 84); printfList(stu); puts("================================="); deleteRecordFromList(stu, "zhangsan"); printfList(stu); puts("================================="); findAndEdit(stu, "zhangsi", 100); printfList(stu); puts("================================="); return 0;}</span>
0 0
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 第三章:Java语言基础II 第9、10节 综合案例 算命程序
- House Robber (leetcode 198)
- linux下几种目标文件的分析
- Java语言基础1--专题课 拆数
- Binary Tree Postorder Traversal
- 链表
- Hdu 5113 Black and White ---2014北京现场赛B题
- 大整数除法
- 解析目标文件
- 第三章——目标文件里有什么
- 目标文件和可执行文件的区别
- java基础
- 学习PrintWriter类
- PAT 数据结构 04-树7. Search in a Binary Search Tree (25)