1 / 26
文档名称:

数据结构实验报告册实验数据结构实验报告册实验报告 册数据结构实验.doc

格式:doc   大小:275KB   页数:26页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验报告册实验数据结构实验报告册实验报告 册数据结构实验.doc

上传人:小健 2021/7/22 文件大小:275 KB

下载得到文件列表

数据结构实验报告册实验数据结构实验报告册实验报告 册数据结构实验.doc

文档介绍

文档介绍:信阳师范学院计算机与借息技术学院
数据结构卖验报告
专 业
学 号
姓 名
指导教师
《数据结构》实验报告」
实验内容: 线性链表的基本操作
学号:_ 姓名:
一、 上机实验的问题和要求(需求分析):
[题目]
线性表链式存储结构下基本操作的实现(初始化、赋值、取值、插入、删除、等)。
二、 程序设计的基本思想,原理和算法描述:
首先基于线性链表的存储结构建一个单链表(下面的程序实现的是通过头插法逆序建表), 在此基础上实现对单链表的赋值、取值、插入、删除以及两个表的归并,需要注意的是插入 (删除)过程中指针的修改。
三、 调试和运行程序过程中产生的问题及采取的措施:
调用函数时,参数传递错误。通过一步一步调试根据提示进行修改。
四、 源程序及注释
[源程序]程序名:
#include <>
#include <>
#include <>
#define OK 1
#define ERROR 0
#define OVERFLOW-1
#define INITSIZE 100
#define INCREMENT 10 〃预定义常量
typedef int Status; 〃定义状态结果类型
typedef int ElemType; 〃定义数据元素类型 typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList; 〃定义顺序表的存储结构
Status InitList(SqList &L)
{//构造一个空的顺序表L.
=(ElemType*)malloc(INITSIZE*sizeof(ElemType)); if( !)exit(OVERFLOW);
=O;
=INITSIZE;
return(OK);
}
void Assign(SqList &L)
{〃为顺序表L的各元素赋值.
int i, N;
printf("Please input the Number of the SqList:"); scanf("%d",&N);
printf("Please input the elements:");
for(i=0;i<N;i++)
{ scanf(" %d" ,&[i]);
++;}
}
void Li stTraverse(S qLi st L)
{//遍历顺序表L.
int i;
for(i=0;i<=-1 ;i++)
printf("%d ",[i]);
printf(n\nn);
printf("the length is:%d\n",);
}
void Print(ElemType g)
{
printf("%d\n",g);
}
void ListTraverse2(SqList L,void (*vi)(ElemType)) {//遍历顺序表L的另一种方法.
int i;
ElemType *p;
p=;
for (i=O;i<=-1 ;i++)
vi(*p++);
printf(nthe length is:%d\n",);
}
Status GetELem(SqList L, int i, ElemType &e)
{〃取顺序表L的第i个元素的值,用e返回.
e=[i-l];
return OK;
int ListLength(SqList L)
{ 〃求顺序表的长度
return(L. length);
}
Status ListInsert(SqList &L, int i, ElemType e)
{ 〃在顺序表L的第i个元素前插入元素e.
ElemType *p,*q,*newbase;
if(i< llli>+ l)return ERROR;
if(==)
{ newbase=(ElemType*)realloc(,(INITSIZE+INCREMENT)*sizeof(ElemType)); if(!newbase)exit(O VERFLOW);
=newbase;
+=INCREMENT;
}
q二& [i-1];
for(p=&[-1 ] ;p>=q;