c语言链表的插入、删除和查找
实验报告示例
信息系情报10_级 _______班 ____2011__年___月_日姓名___________ 学号__ 电话
编制一个演示单链表插入、删除、查找等操作的程序
本演示程序用编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素值都是整数 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中查找操作后显示要查找元素的位置。 程序所达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作 测试数据: A. 插入操作中输入, B. 查找操作中输入返回这个元素在单链表中的位置 C. 删除操作中输入2,删除位于2的元素
InitLinkList(&L) 操作结果:构造一个空的单链表L. InsLinkList(&L,pos,e) 初始条件:单链表L已存在 操作结果:将元素e插入到单链表L的pos位置 DelLinkList(&L,pos,&e) 初始条件:单链表L已存在 操作结果:将单链表L中pos位置的元素删除 LocLinkList(L,e) 初始条件:单链表L依存在 操作结果:单链表L中查找是否元素e, 若存在,返回元素在表中的位置;若不存在,. 2)本程序包含个函数: 主函数main() 初始化单链表函数InitLinkList() 显示单链表内容函数dispLinkList() 插入元素函数InsLinkList() 删除元素函数DelLinkList() 查找元素函数LocLinkList()实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。 1) 结点类型和指针类型 typedef struct LinkList
{
int data;
struct LinkList *next;
}LIST; 2) 单链表的基本操作
为了方便,在单链表中设头结点,其data域没有意义。 InitLinkList(LinkList &L) (伪码算法) DispLinkList(LinkList L) (伪码算法) InsLinkList(LinkList &L,int pos,int e) (伪码算法) DelLinkList(LinkList &L,int pos,int &e) (伪码算法) LocLinkList(LinkList L,int e) (伪码算法)
3) 其他模块伪码算法
5.调试分析
程序执行后显示 ======================== 0----EXIT 1----INSERT 2----DELETE 3----LOCATE ======================= SELECT: 在select后输入数字选择执行不同的功能。要求首先输入足够多的插入元素,才可以进行其他的操作。每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。
1) 建立单链表: ? 选择1,分别输入得到单链表(15,14,13,12,11) 2) 插入: ? 选择1输入(,100),得到单链表(15,100,14,13,12,11) ? 选择1输入(-1,2),显示输入 ? 选择1输入(,2),显示输入 ? 选择1输入(6,2),得到单链表(15 14,13,12,11,2) 3) 删除: ? 选择2,输入。得到单链表(15,13,12,11) ? 选择2,输入。得到单链表(14,13,12,11) ? 选择2,输入4。得到单链表(14,13 11) ? 选择2,输入。显示输入 4) 查找 ? 选择3,输入14。返回pos= ? 选择3,输入100。返回#include
#include
typedef struct LinkList
{
int data;
struct LinkList *next;
}LIST;
LIST *InitLinkList();
LIST *InsLinkList(LIST *,int);
LIST *DelLinkList(LIST *,int);
void LocLinkList(LIST *,int);
void dispLink