实验报告模版
实习报告 题目:单链表的基本操作 班级:信息管理 2002 级 1 班 姓名:孟凡俊 学号:20020721019 完成日期:2004/3/25 一、需求分析 1 . 问题描述:设计程序,完成对单链表的建立、遍历、插入、删除、逆序等操作。
2 . 目的:通过对单链表的各种操作,建立对链表的知识结构系统,熟悉并掌握链表的 知识。
二、概要设计 1. 单链表的抽象数据定义 ADT Linklist{ 数据对象:D={Linklist,NODE} 数据关系:R={Linklist,NODE} 基本操作:
print(NODE *&head)初始条件:存在一个带头结点的链表 操作结果:遍历链表,从头节点开始 Setup(NODE *&head,int n)初始条件:整型数 n 操作结果:建立一个带头结点的链表 Insert(NODE *&L,int i,int e)初始条件:存在整型数 i,e 操作结果:在链表 L 中,将 e 插入到 i 位置 Delete(NODE *&L,int i,int &e)初始条件:存在整型数 i,形式参数 e 操作结果:将数据 e 删除 Convert(NODE *&L)初始条件:存在链表 L 操作结果:将数组逆序输出 }ADT Linklist;2. 主程序设计 1).主程序模块 void main(){ 初始化; 函数调用; 输出结果; } 2).函数定义模块 实现单链表的操作。
3. 各模块之间的调用关系 主程序模块 函数定义模块 三、设计详细
1、数据类型定义 struct NODE { int data;NODE *next;}; 2、函数声明 void print(NODE *&head);//遍历 void Setup_L(NODE *&head,int n);//建立 void Insert_L(NODE *&L,int i, int e);//插入 void Delete_L(NODE *&L,int i,int &e);//删除 void Convert_L(NODE * &L);//逆序 3、主函数和各函数的定义 #include data<<","; //输出元素值 p=p->next;//后移指针 } cout< if(!p||j>i-1){ cout<<"删除值超出范围"< 2、应使程序灵活性增强,可随需要自主输入数据,满足用户的需要。 3、在所给出的参考答案中,在函数删除模块中,没有考虑到删除最后一位的情况,加入 if(p->next->next==NULL){q=p->next;e=q->data;p->next=NULL;delete q;}语句后,最后一位可以删除。 五、用户手册 本程序的操作环境为 VC++,执行文件为“单链表操作.cpp”。 六、测试结果
