77范文网 - 专业文章范例文档资料分享平台

实验三 栈、队列、串的操作

来源:网络收集 时间:2020-04-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验类型:验证性 实验要求:必修 实验学时: 2学时 一、实验目的:

参照给定的栈类和队列类的程序样例,验证给出的栈和队列的常见算法,并结合线性表类实现有关串的操作。 二、实验要求:

1、掌握栈、队列、串的特点。掌握特殊线性表的常见算法。

2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容:

1. 堆栈类测试和应用问题。要求:

(1)设计一个主函数实现对顺序堆栈类和链式堆栈类代码进行测试。测试方法为:依次把数据元素1,2,3,4,5入栈,然后出栈堆栈中的数据元素并在屏幕上显示。 (2)定义数据元素的数据类型为如下形式的结构体:

设计一个包含5个数据元素的测试数据,并设计一个主函数实现依次把5个数据元素入栈,然后出栈堆栈中的数据元素并在屏幕上显示。 2. 队列类测试和应用问题。要求:

设计一个主函数对循环队列类和链式队列类代码进行测试.测试方法为:依次把 1,2,3,4,5入队,然后出队中的数据元素并在屏幕上显示。

3.设计串采用顺序存储结构,编写函数实现两个串的比较Compare(S, T)。要求比较结

有大于、等于和小于三种情况。 *4. 设计算法利用栈类实现把十进制整数转换为二至九进制之间的任一进制输出。 *5. 设计串采用静态数组存储结构,编写函数实现串的替换Replace(S, start, T, V),

即要求在主串S中,从位置start开始查找是否存在子串T,若主串S中存在子串T,则用子串V替换子串T,且函数返回1;若主串S中不存在子串T,则函数返回0。并要求设计主函数进行测试。

一个测试例子为:S=”I am a student”,T=”student”,V=”teacher “。

四、实验源码 1.1

#include using namespace std; const int StackSize=10; class SeqStack {

public:

SeqStack( ) {top=-1;} ~SeqStack( ) { } void Push( int x )

{ if (top== StackSize-1) throw \溢出\ top++;

data[top]=x;}

int Pop( )

{ if (top==-1) throw \溢出\ int x=data[top--]; return x;}

int data[StackSize]; int top; };

int main() {

SeqStack a;

for(int i= 1 ; i <= 5; i++) { a.Push(i);}

for( i = 0 ;i < 5; i++) { int k = 0; k = a.Pop();

cout<< k << endl;} }

1.2

#include #include using namespace std; const int StackSize=10; typedef struct {

int notask; char name[10];}DataType; class SeqStack {

public:

SeqStack( ) {top = -1;} ~SeqStack( ) { }

void Push( DataType x ) {

if (top== StackSize-1) throw \溢出\ top++;

data[top] = x; }

DataType Pop( )

{ if (top==-1) throw \溢出\ DataType x=data[top--]; return x;}

DataType data[StackSize]; int top; };

int main() { SeqStack a;

DataType b[5];

for(int i = 1 ; i <= 5; i++) {cin>> b[i].name;

b[i].notask = i; } for( i = 1 ; i <= 5; i++) { a.Push(b[i]);}

for( i = 1 ;i <= 5; i++) {DataType k ; k = a.Pop();

cout<< k.name <<\

2.

#include #include using namespace std; #define T int

const int QueueSize=100; class CirQueue {public:

T data[QueueSize]; int front, rear;

CirQueue( ) {front=rear=0;} ~ CirQueue( ) { } void EnQueue(T x)

{ if ((rear+1) % QueueSize ==front) throw \上溢\

rear=(rear+1) % QueueSize; data[rear]=x; } T GetQueue( ) {

if (rear==front) throw \下溢\ int i=(front+1) % QueueSize; return data[i]; }

T DeQueue( ){

if (rear==front) throw \下溢\ front=(front+1) % QueueSize; return data[front]; } };

int main() {

CirQueue a;

for(int i = 1 ; i <= 5; i++){ a.EnQueue(i);} for( i = 1 ;i <= 5; i++){ int k ; k = a.DeQueue();cout<< k<< endl;}} 3.

#include #include using namespace std; #define T char

const int QueueSize=100; class CirQueue {

public: T data[QueueSize]; int front, rear;

CirQueue( ) {front=rear=0;} ~ CirQueue( ) { } void EnQueue(T x)

{ if ((rear+1) % QueueSize ==front) throw \溢出\ rear=(rear+1) % QueueSize; data[rear]=x; } T GetQueue( ) { if (rear==front) throw \溢出\ int i=(front+1) % QueueSize; return data[i]; } T DeQueue( ){ if (rear==front) throw \溢出\ front=(front+1) % QueueSize; return data[front]; } };

int main(){ CirQueue a,b; char x[100] = {0},y[100] = {0} ; cin >> x >> y; for(int i = 0 ; i < strlen(x); i++){ a.EnQueue(x[i]); } for( i = 0 ; i < strlen(y); i++){ b.EnQueue(y[i]); } int lenx = strlen(x),leny = strlen(y); if( lenx < leny ){ puts(\ return 0; }

if(lenx > leny ){ puts(\ return 0; } for( i = 0 ;i < lenx; i++){ char xx,yy; xx = a.DeQueue(); yy = b.DeQueue(); if(xx != yy) { if(xx > yy){ puts(\ return 0;} else{ puts(\ return 0; } } } puts(\

}

五、实验结果 1.1

1.2

2

3

六、心得体会

在这次实验中,我学到很多东西,加强了我的动手能力,并且培养了我的独立思考能力,我们坚持理论联系实际的思想,以实践证实理论,从实践中加深对理论知识的理解和掌握。通过这次实验,我们对数据结构有了更深刻的了解,增强了程序的编写的能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错误,通过不断的调试虽然修正了一些错误,但是还是有一些错误不知道如何去改,最终参考了老师的参考代码才弄懂。这次的实验,我们对数据结构中栈有了更深刻的理解。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验三 栈、队列、串的操作在线全文阅读。

实验三 栈、队列、串的操作.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/975729.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: