数据结构(C语言)单链表的基本操作 下载本文

内容发布更新时间 : 2024/5/10 21:25:54星期一 下面是文章的全部内容请认真阅读。

实验名称:实验一 单链表的基本操作

实验目的

熟练掌握线性表两类存储结构的描述方法。

实验内容

从键盘读入若干个整数,建一个整数单链表,并完成下列操作: (1)打印该链表;

(2)在链表中插入一个结点,结点的数据域从键盘读入,打印该链表; (3)在链表中删除一个结点,被删结点的位置从键盘读入,打印该链表;

(4)在链表中做查找:从键盘读入要查找的整数,将该整数在链表中的位置打印出来,若要查找的整数不在链表中,返回一个信息。

算法设计分析

(一)数据结构的定义

单链表存储结构定义为: struct Node;

typedef struct Node * pnode; struct Node {

int info; pnode link; };

typedef struct Node * LinkList;

(二)总体设计

程序由主函数、创建单链表函数、链表长度函数、链表打印函数、插入正整数函数、删除函数、查询函数组成。其功能描述如下:

(1)主函数:调用各个函数以实现相应功能 int main(void) //主函数 { printf(\单链表的基本操作实验:\\n\struct list *pnode;

pnode = creat(); //创建 print(pnode); //输出 insert(pnode); //插入 print(pnode); //输出 _delete(pnode); //删除 print(pnode); //输出 _located(pnode); //查找 print(pnode); //输出 return 0 ; }

(三)各函数的详细设计:

Function1: struct list *creat()//创建链表;

1

(1):申请表头节点空间 (2):输入-1结束输入; (3):结点的数据域从键盘读入;

Function2:void print(struct list *pnode)//打印链表; (1):利用while循环输出结点的数据域;

Function3:void insert(struct list *pnode)//插入; (1):定义一个整型变量flag 记录当前指定插入的位置; (2):利用if条件判断念输入的位置是否有效;//

If(position <=0||position>length(pnode))

//当输入的位置小于0或者大于链表的长度时,继续输入,直到输入到正确的值为止;

(3):申请一个结点空间(为即将插入的节点); (4):用q->info 记录插入节点的数据域; (5):用while(flag!=position)判断插入的位置; (6):if(t == pnode->next) 判断插入的位置是否为单链表头结点的后面;如果是,直接用 q->next = pnode->next;

2

pnode->next = q; return ;插入结点;

Function4:void _delete(struct list *pnode)//删除; (1):用if(position<=0||position>length(pnode)) 判断输入删除的位置是否在允许的范围<0或 >点链表的总长度,则重新输入; (2):while(flag!=position&&p->next!=NULL) 找到需要删除的位置; (3):找到要删除的结点后,把要删除的结点架空,即可删除该结点;

3