实验三 单链表的基本操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;}

相关文档
最新文档