数据结构大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学实验报告实验名称:线性表的顺序存储实现及链式存储实现

学生姓名:学号:80023120 专业班级:电子商务121班

实验类型:□验证□综合□设计□创新

实验目的

1.熟悉掌握线性表的两种存储实现方式。

2.熟悉掌握线性表的两种存储实现方式下的一些基本操作。

试验内容

1.写出顺序表的class和一些关于顺序表的操作函数。

2.写出单链表的class和一些关于单链表的操作函数。

3.写出双向链表的class和一些关于双向链表的操作函数。

4.测试类中实现的操作函数。

实验步骤

1、顺序表类是指采用顺序存储结构来表示线性表的类。

线性表采用顺序存储结构,其数组和线性表长可以作为类的数据成员。

创建一个类

const int MAXSIZE=100; //数组的容量最大值为100

class SqList

{ private:

ElemType elem[MAXSIZE]; //数组

int length; //线性表长

public:

SqList( void); //构造函数

~SqList(){ }; //析构函数

void Creat() ; //初建一个简表函数

void PrintOut(); //输出线性表函数

void Insert( int i, ElemType e); //插入函数

ElemType Delet(int i); //删除函数

};//类定义结束

{ cout<<"\n Input length="; cin>>length;

cout<<"\n Input Data:\n" ;

for(int k=0; k<length;k++) cin>>elem[k];

}

void SqList::PrintOut() //输出线性表函数

{cout<<"\n length="<<length ;

cout<<"\n PrintOut Data:\n" ;

for(int k=0; k<length;k++) cout<<setw(6)<<elem[k];

cout<<endl;

}

2、单链表:假设一个线性表有n个元素,则这n个元素所对应的n个节点就通过指针(是计算机内某个存储单元的地址)链接成一个链表由于这种链表中每个节点只有一个指针域,故称为单链表。

建单链表节点类型

(typedef int ElemType;

struct NodeType )

先创建带头节点的空链表,该运算主要是为单链表的头节点申请空间,若申请成功,则返回单链表。

(LinkList list=(LinkList)malloc(sizeof(struct Node));/*申请表头节点空间*/

void creat(); //初建一个非空链表)

建立链接类

(class link)

判断单链表是否为空

(return (llist->link= =Null);)

在带头节点的单链表list中求第一个值为x的节点的存储位置。

(PNode locate_link(L))

查找过程要从第一个节点开始,一次将每个节点数据域的值与x进行比较,找到第一个元素值为x的节点,并将其存储地址返回。

class LinkList

{ private:

NodeType *Head; //链表头指针

public:

LinkList(); //构造函数,初始化空链表

~LinkList(); //析构函数

void creat(); //初建一个非空链表

void Display(); //输出链表的数据元素

void insert(int i,ElemType x); //插入

ElemType delet(int i ); //删除第i个结点

};//类定义结束

3、

4、

实验结果:正确。

实验总结:注意细节步骤,一步步认真做,否则容易遗失。

南昌大学实验报告

实验名称:栈和队列的插入和删除实现

学生姓名:学号:专业班级:

实验类型:□验证□综合□设计□创新

实验目的

1.熟悉掌握栈的两种基本操作。

2.熟悉掌握队列的两种基本操作。

试验内容

1.写出顺序栈的class和一些关于栈的操作函数。

2.写出队列的class和一些关于队列的操作函数。

3. 测试类中实现的操作函数。

实验步骤

顺序栈:

#include"iostream.h"

#include"Windows.h"

typedef char ElemType;

const int SIZES = 6;

class OderStack

{

private:

ElemType stack[SIZES];

int top;

public:

void startstack()

{top=0;}

void push();

void pop();

void gettop();

void isempty();

};

void OderStack::push()

{

if(top==SIZES-1)

cout<<"提示:\n\t\t\t栈已满.....不能继续进栈。"<<endl;

else

{

ElemType e;

top++;

cout<<"请输入你要进栈的元素:";

cin>>e;

stack[top]=e;

}

}

void OderStack::pop()

{

if(top==0)

cout<<"提示:\n\t\t\t栈已空.....不能继续出栈。"<<endl;

else

{

top--;

}

}

void OderStack::gettop()

{

cout<<"得到栈顶元素:"<<stack[top]<<endl;

相关文档
最新文档