1、实验三 单链表的基本操作一、实验目的1、掌握线性表的链式存贮结构及基本操作,深入了解链表的基本特性,以便在实际问题背景下灵活运用它们。2、巩固该存贮结构的构造方法,深入理解和灵活掌握链表的插入、删除等操作。二、实验要求1、定义一链表类型,并定义带有头结点的单链表。2、将教材中链表的建立、初始化、插入、删除等函数实现。3、链表能够存储 10 名学生的基本信息(包括姓名、学号和成绩) 。4、由主函数按照用户要求对各个链表操作访问。5、每操作之前要有明确的说明,操作后要输出操作结果。6、分析顺序表链表的插入、删除、查找的时间和空间复杂度。三、实验内容1、在自己的 U 盘的“姓名+学号”文件夹中创建“
2、 实验 3”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。2、完成链表操作的如下函数:单链表的建立、插入、删除#include#include static int N=5; typedef struct _sy char name12;int no;struct _sy *next;stud;stud *Create(int m) /创建链表 int i;stud *h,*p,*q; h=(stud*)malloc(sizeof(stud);if(h!=NULL) p=h;for(i=0;iname,q-next=NULL; p-next=q;p=q;printf(“n“);ret
3、urn(h);stud *Delete(stud *sy,int post) /删除一个学生的数据 int i;stud *cur,*pre;cur=sy;if(0=post) return(sy);else if(1=post) cur=cur-next;sy-next=cur-next;free(cur);else for(i=2;inext;pre=cur;cur=cur-next;pre-next=cur-next;free(cur);return(sy); stud *Insert(stud *sy,int post) /插入一个新的学生的数据 int i;stud *cur,*pr
4、e,*node;if(sy!=NULL) cur=sy;node=(stud*)malloc(sizeof(stud);if(node!=NULL) printf(“请输入新人的姓名和学号:n“);scanf(“%s%d“,node-name, if(1=post) node-next=sy-next;sy-next=node;else for(i=2;inext;node-next=pre-next;pre-next=node;printf(“n“);return(sy);void Print(stud *sy) /输出学生信息 int post=1;stud *cur;cur=sy-nex
5、t;printf(“当前的学生信息如下所示:n“);while(cur!=NULL) printf(“第%d 个人的姓名是:%s,学号为:%dn“,post,cur-name,cur-no);cur=cur-next;post+;N=-post;int main() int mm,post,i; stud *head;head=Create(N);Print(head);for(i=0;i1;i+) printf(“请输入要删除的学号的位置:n“);scanf(“%d“,Delete(head,mm);Print(head);printf(“请输入要插入学号的位置:n“);scanf(“%d“,Insert(head,post);Print(head); return 0;