实验三 单链表的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三单链表的基本操作
一、实验目的
1、掌握线性表的链式存贮结构及基本操作,深入了解链表的基本特性,以便在实际问题背景下灵活运用它们。
2、巩固该存贮结构的构造方法,深入理解和灵活掌握链表的插入、删除等操作。
二、实验要求
1、定义一链表类型,并定义带有头结点的单链表。
2、将教材中链表的建立、初始化、插入、删除等函数实现。
3、链表能够存储10名学生的基本信息(包括姓名、学号和成绩)。
4、由主函数按照用户要求对各个链表操作访问。
5、每操作之前要有明确的说明,操作后要输出操作结果。
6、分析顺序表链表的插入、删除、查找的时间和空间复杂度。
三、实验内容
1、在自己的U盘的“姓名+学号”文件夹中创建“实验3”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。
2、完成链表操作的如下函数:
单链表的建立、插入、删除
#include
#include
static int N=5;
typedef struct _sy
{ char name[12];
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;i { q=(stud*)malloc(sizeof(stud)); if(q!=NULL) { printf("依次输入第%d个人的姓名和学号:\n",i+1); scanf("%s%d",q->name,&q->no); q->next=NULL; p->next=q; p=q; } } } printf("\n"); return(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;i { cur=cur->next; pre=cur; } cur=cur->next; pre->next=cur->next; free(cur); } return(sy); }} stud *Insert(stud *sy,int post) //插入一个新的学生的数据 { int i; stud *cur,*pre,*node; if(sy!=NULL) { cur=sy; node=(stud*)malloc(sizeof(stud)); if(node!=NULL) { printf("请输入新人的姓名和学号:\n"); scanf("%s%d",node->name,&node->no); if(1==post) { node->next=sy->next; sy->next=node; } else { for(i=2;i { pre=cur; cur=cur->next; } node->next=pre->next; pre->next=node; }}} printf("\n"); return(sy); } void Print(stud *sy) //输出学生信息 { int post=1; stud *cur; cur=sy->next; printf("当前的学生信息如下所示:\n"); while(cur!=NULL) { printf("第%d个人的姓名是:%s,学号为:%d\n",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;i<1;i++) { printf("请输入要删除的学号的位置:\n"); scanf("%d",&mm); Delete(head,mm); Print(head); printf("请输入要插入学号的位置:\n"); scanf("%d",&post); Insert(head,post); Print(head); } return 0;}