数据结构线性表存储实验报告
- 格式:doc
- 大小:570.00 KB
- 文档页数:21
数据结构《实验1》实验报告
实验项目1:线性表存储及运算
学号1209030317 姓名王丰生课程号实验地点指导教师时间
评语:
按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求;无抄袭的行为。
成绩教师签字
线性表链式存储(双向链表)插入、删除运算
1、预习要求:线性表的插入、删除相关概念及运算,完成线性表元素的插入、删除。
2、实验目的:
(1)了解线性表的插入、删除相关概念;
(2)理解线性表的插入、删除过程和结构定义;
(3)掌握算法转换为程序的过程中的变化。
3、实验内容及要求:
(1)分别建立包含10个数据元素的链式存储线性表;
(2)从键盘输入一个数据元素,插入到线性表中第k(包含0号位置)个位置;
(3)从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;
(4)给出程序及插入、删除前和插入、删除后线性表结果。
4、实验设备(环境)及要求
硬件:支持 Intel Pentium Ⅱ及其以上 CPU ,内存 128MB 以上、硬盘 1GB 以上容量的微机。
软件:配有 Windows98/2000/XP 操作系统,安装 Visual C++ 。
5、实验时间:6学时
6、该文档的文件名不要修改,存入<学号> <姓名> 命名的文件夹中
7、该表中的数据只需填空,已有内容不要修改
实验结果(运行结果界面及源程序,运行结果界面放在前面):图1.0 菜单栏
图1.1 功能1 输出链表中所有元素(截图部分缺省)
图1.2 功能以递归方式逆向输出链表中的所有元素(截图部分缺省)图1.3 功能计算双向链表的长度(截图部分缺省)
图1.4 功能在链表中查找第K个元素(截图部分缺省)
图1.5 功能在链表中查找符合查找关键字 (学号)的元素(截图部分缺省)
图1.6 功能在链表中插入新元素到第k个元素后面(截图部分缺省)
图1.7 功能删除链表中第k个结点(截图部分缺省)
图1.9 功能把链表中第k个结点移至第一个(截图部分缺省)
图1.10 功能把链表中第i到第j个结点删除(截图部分缺省)
代码
#define STUDENT EType
#define HeadEType int
#include
#include
#include
using namespace std;
struct STUDENT //学生类的定义
{
char number[11];
char name[10];
char sex[3];
int age;
char place[25];
};
struct DoubleChainNode // 结点定义
{
EType data;
DoubleChainNode *plink;
DoubleChainNode *nlink;
};
struct HeadNode // 表头结点
{
HeadEType Hdata;
DoubleChainNode *first;
};
typedef HeadNode *DoubleChainList;
// 构造一个空双向链表
void CreatDoubleChainList(DoubleChainList &L) {
L=new HeadNode;
L->first=NULL;
}
// 逐个地输出链表L中的数据元素
void OutputDoubleChainList(DoubleChainList &L) {
DoubleChainNode *current=L->first;
cout<<"L->first--》";
while (current)
{
current=current->nlink ;
cout<<"nlink"<<"--------->";
}
cout<<"NULL"< current=L->first; cout<<" "; while (current) { cout< current=current->nlink ; } cout< current=L->first; cout<<" "; while (current) { cout< current=current->nlink ; } cout< current=L->first; cout<<" "; while (current) { cout< current=current->nlink ; } cout< current=L->first; cout<<" "; while (current) { cout< current=current->nlink ; } cout< current=L->first; cout<<" "; while (current) { cout< current=current->nlink ; } cout< } // 返回双向链表L中数据元素结点数 int LengthDoubleChainList(DoubleChainList &L) {