数据结构大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;