河北师大软件学院第18次作业
来源:互联网 发布:人在德国上淘宝 编辑:程序博客网 时间:2024/04/30 01:35
/******************************************* 任务:带头结点的链表,删除,增添,查找 时间:2015年6月30日00:13:03********************************************/# include <stdio.h># include <malloc.h># include <string.h>/*定义结构体*/typedef struct student{ char name[20]; int score; struct student *Next;}STU,*List;/*创建接收学生信息*/int i=0;const List stuList(){ List temp,temp1 = NULL; char names[20]; List pHeader = (List)malloc(sizeof(STU)); //创建头结点 pHeader -> Next = NULL; while(1) { printf("请输入第%d个学生信息(直接回车停止输入学生信息):\n",++i); printf("\n\t姓名:"); fflush(stdin); gets(names); //接收字符串 if(!strlen(names)) break; temp = (STU*) malloc(sizeof(STU)); //创建新节点 strcpy(temp -> name , names); printf("\t成绩:"); scanf("%d",&temp -> score); temp->Next = 0; printf("\n"); if( !pHeader -> Next) { pHeader -> Next = temp; } else { temp1 -> Next = temp; } temp1 = temp; } return pHeader;}/*输出学生成绩单*/void print(List head){ List p = head -> Next; printf("\n\t姓名\t\t成绩\n"); while(p) { printf("\t%s\t\t%d\n",p -> name,p -> score); p = p -> Next; } printf("\n");}/*查找成员*/List find(List head){ List p = head -> Next; char fname[20]; printf("\n请输入您要修改或删除的学生的姓名:"); fflush(stdin); gets(fname); for(p = head ;p != NULL;p = p -> Next) { if( 0 == strcmp(p -> name,fname)) { return p; } } if(p == NULL) return 0;}/*修改成员信息*/int findAndEdit(List head){ List p = head -> Next; int a; p = find(head); if(p) { printf("\n请输入修改后的成绩:"); scanf("%d",&a); p -> score = a; if(p -> score == a) printf("\n修改成功\n"); return 1; } else { printf("\n未找到该成员信息,不能修改\n\n"); return 0; }}/*链表结尾插入*/int insert (List head,List pNew){ List p = head -> Next; while(p -> Next) { p = p -> Next; } p -> Next= pNew; if(p -> Next == pNew) printf("添加成功\n");}/*删除指定节点*/int deleteNode(List head){ List p = head; List temp = NULL; temp = find(head); if(temp == NULL) { printf("\n未找到该成员信息,不能删除\n\n"); return; } for(;p!=NULL;p = p -> Next) { if(p -> Next == temp) { p -> Next = temp -> Next; } } printf("\n删除成功\n\n");}/*释放内存*/void freeList(List pH){ List p = NULL; printf("FreeList\n"); while(NULL != pH) { p = pH; pH = pH->Next; free(p); }}int main (void){ const List head = stuList(); int m; STU pNew; char Nwname[20]; printf("\n======================成绩表单======================\n"); print(head); printf("\n====================================================\n"); /*末尾添加节点*/ printf("\n请输入在结尾处添加新节点的信息\n\n"); printf("\t姓名:"); fflush(stdin); gets(Nwname); strcpy(pNew.name , Nwname); printf("\t成绩:"); scanf("%d",&pNew.score); printf("\n"); pNew.Next = NULL; insert(head,&pNew); printf("\n==================添加后的成绩表单==================\n"); print(head); printf("====================================================\n\n"); /*删除节点*/ deleteNode(head); printf("\n==================删除后的成绩表单==================\n"); print(head); printf("====================================================\n\n"); /*修改学生成绩*/ m = findAndEdit(head); if(m != 0) { printf("\n==================修改后的成绩表单==================\n"); print(head); printf("====================================================\n\n"); } freeList(head); return 0;}
0 0
- 河北师大软件学院第18次作业
- 河北师大软件学院第17次作业
- 河北工业大学计算机科学与软件学院党员知识题库
- 河北软件职业技术学院怎么样?CSDN乐知学院
- 河北软件学院visudo学习(忘了第几课了)
- 第7次作业
- 第6 次作业
- 第5次作业
- 第11次作业
- 第X次作业
- 第11次作业
- 第3次作业
- 第4次作业
- 第5次作业
- 第6次作业
- 第7次作业
- 第9次作业
- 第8次作业
- SQL Server 数据库备份和还原认识和总结(一)
- 玩命牛的成长记录(二十三)——文字
- 常用的属性设置
- oc static extern 和const
- OJ第三批——Problem G:C++习题 多重继承
- 河北师大软件学院第18次作业
- 转载的文章
- 算法---寻找最小的k个数
- Java的重载和重写区别(面试常见)
- IOCTL函数用法
- 玩命牛的成长记录(二十三)——各种文字特效
- java中的线程初步
- Apple硬件设备占有率统计网站
- Android之Monkey全参数(包含隐藏参数)