数据结构实验报告二(栈、队列与杨辉三角)

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

《数据结构》

实验报告

项目名称栈、队列与杨辉三角

专业班级软件工程工科试验班

学号3903120128

姓名谢江

实验成绩:

批阅教师:

2012年5月22 日

实验1《单链表的建立与约瑟夫问题》实验学时:实验地点:寝室与实验室实验日期:2012年5月22日

1.需求分析

实验2 主要是关于栈。队列的建立以及杨辉三角问题的解决(队列运用)

2.概要设计以及详细设计

(1)栈

class Stack

{

public:

Stack();

bool empty();//判断栈是否为空

T peek();//显示栈顶元素

void push(T value);//入栈

T pop();//出栈

int getSize();//当前栈中元素的数量

private:

T *elements;//数组指针

int size;//栈中的元素数量

int capacity;//栈的容量

void ensureCapacity();//确认栈的容量是否大于元素数量

};

(2)队列

class Queue

{

public:

Queue();

void enQueue(T element);//元素入队

T deQueue();//元素出对,如果没有元素,抛出异常

int getSize();//获取队列大小

private:

LinkedList list;//定义表

};

3.调试分析

内容包括:

调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;经验和体会等。

个人标记:

能建立顺序栈,以及链表顺序队列,对于比较复杂的链栈、循环队列等比较不熟悉,杨辉三角问题存在问题此次报告暂时不交,还有就是抛出异常的问题,例如:T deQueue()throw (runtime_error);//元素出对,如果没有元素,抛出异常

会提示警告:

C++ exception specification ignored except to indicate a function is not_declspec(nothrow)

于是尽可能用if(…)throw runtime_error,就不报错了

4.附录

(1)栈

Stack.h

*****************************

//采用数组的方式进行栈的操作

#ifndef STACK_H

#define STACK_H

template

class Stack

{

public:

Stack();

bool empty();//判断栈是否为空

T peek();//显示栈顶元素

void push(T value);//入栈

T pop();//出栈

int getSize();//当前栈中元素的数量

private:

T *elements;//数组指针

int size;//栈中的元素数量

int capacity;//栈的容量

void ensureCapacity();//确认栈的容量是否大于元素数量};

template

Stack::Stack()

{

capacity = 10;//初始栈的大小

size = 0;//初始元素的数量

elements = new T[capacity];//建立指针

}

template

bool Stack::empty()

{

if(size == 0)

return true;

else

return false;

}

template//只显示栈顶元素并不出栈

T Stack::peek()

{

return elements[size - 1];

}

template

void Stack::ensureCapacity()

{

if(size >= capacity)//如果满足进行指针的更换

{

T *old = elements;

capacity = size + 1;

elements = new T[capacity];

for(int i = 0; i < size; i++)elements[i] = old[i];

delete old;

}

}

template

void Stack::push(T value)

{

ensureCapacity();//入栈前进行栈是否溢出的判断

elements[size++] = value;

}

template

T Stack::pop()

{

return elements[--size];

}

template

int Stack::getSize()

{

return size;

}

#endif

*************************************

TestStack.cpp

*************************************

#include

#include"Stack.h"

using namespace std;

int main()

{

Stack intS;

cout << "before push size of intStack is: " << intS.getSize() << endl;//统计入栈前栈的大小

for(int i = 0; i < 10; i++)

{

int num;

cout << "enter num: ";

cin >> num;

intS.push(num);

}

相关文档
最新文档