内容发布更新时间 : 2024/11/17 20:37:57星期一 下面是文章的全部内容请认真阅读。
《数据结构》实验报告
学号 2015011512 姓名 胡明禹 专业 数学与应用数学 时间 2018.3.20
一、 实验题目
实验2 单链表基本操作
二、 实验目的
1. 熟练掌握线性表的顺序存储方式下,基本操作的实现算法,巩固和
体会单链表操作特点;
2. 理解体会动态内存申请与释放;
3. 通过本次实验,熟练掌握C语言指针的使用
三、算法设计分析
(一)实验内容
1.创建一个空的带头结点的单链表 2.采用头插法在单链表中插入n个元素 3.删除单链表中第i个元素 4.实现单链表按关键字查找操作 5.计算单链表的表长并输出单链表 6.销毁单链表 (二)总体设计
此处给出主要函数功能、及函数间调用关系的的描述。例如: 1. 构造一个空的单链表的函数;2. 插入函数;3. 删除函数 4. 查找函数;5.计算并输出函数;6.销毁函数。 其功能描述如下:
(1)主函数:统筹调用各个函数以实现相应功能 void main() (2)
①构造一个空的单链表的函数 Status InitList_L(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));//构造一个空的线性表L f(!L) exit (OVERFLOW);//存储分配失败
L->next=NULL;//空表长度为0system(\清空屏幕 printf(\初始化成功\\n\\n\\n\system(\按任意键继续 return OK; }
void CreateList_L(LinkList &L) {//创建一个新表 int i,count; LinkList p;
system(\清屏 printf(\输入总结点数:\scanf(\
printf(\输入各个结点数值,每输一个按下回车:\\n\for(i = count; i > 0; i--) {
p = (LinkList)malloc(sizeof(LNode)); scanf(\p->next = L->next; L->next = p;//赋值 }
system(\清屏 printf(\录入成功\\n\}
②插入函数
Status ListInsert_L(LinkList &L, int i, int newnode) {//在顺序线性表L中第i个位置之前插入新的元素 LinkList p = L;
LinkList s; int j = 0; while(p&&j p = p->next; ++j; } if(!p||j>i-1)//i插入的位置不合法 { printf(\} s = (LinkList)malloc(sizeof(LNode)); s->data = newnode; s->next = p->next;//将p的后继结点给s的后继结点 p->next = s;//将s给p的后继结点 return OK; } ③删除函数 Status ListDelete_L(LinkList &L, int i) {//在顺序线性表L中删除第i个元素,并用e返回其值 LinkList p=L; LinkList q; int j=0; while(p->next&&j p = p->next; ++j; } if(!(p->next)||j>i-1) return ERROR;//删除位置非法 q= p->next;//将p的后继结点给q