数据结构实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构《实验1》实验报告
实验项目1:线性表存储及运算
学号1309030322 姓名曹思远课程号
实验地点指导教师时间
评语:
按时完成实验;实验内容和过程记录完整;回答问题完整、
正确;实验报告的撰写认真、格式符合要求;无抄袭的行为。
成绩
教师签字
线性表链式存储(双向链表)插入、删除运算
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、该表中的数据只需填空,已有内容不要修改
实验结果(运行结果界面及源程序,运行结果界面放在前面):
#define STUDENT EType //#define bool Status
#define HeadEType int
#include
#include
#include
#include
//以下是数据类型的定义
enum Status{OK, ERROR};
typedef struct
{
char number[10];
char name[10];
char sex[4];
char age[4];
char place[20];
}STUDENT;
struct DoubleNode
{
EType data;
DoubleNode *plink;
DoubleNode *nlink;
};
struct HeadNode
{
HeadEType Hdata;
DoubleNode *first;
};
typedef HeadNode *DoubleChainList;
void Creat(DoubleChainList &L)
{// 构造一个空链表
L=new HeadNode;
L->first=NULL;
//L->Hdata="HeadNode的数据值";
}
void Output(DoubleChainList &L)
{// 逐个地输出链表L中的数据元素
DoubleNode *current=L->first;
while(current)
{
cout< current=current->nlink; } } int Length(DoubleChainList &L) {// 返回链表L中数据元素结点数 DoubleNode *current=L->first; int len=0; while(current) { len++; current=current->nlink; } return len; } void Destroy(DoubleChainList &L) {// 删除链表L中所有数据结点,并释放结点空间 DoubleNode *current; current=L->first; while(L->first) { current=current->nlink; delete L->first; L->first=current; } } bool GetElem(DoubleChainList &L,int k,EType &x) { //L中第k个元素取至x中,如不存在返回false,找到返回true,x带回if(k<1)return false; DoubleNode *current=L->first; int index=1; while(index { current=current->nlink; index++; } if(current) { x=current->data; return true; } return false; }