数据结构实验报告二(栈、队列与杨辉三角)
- 格式:docx
- 大小:25.59 KB
- 文档页数:9
《数据结构》
实验报告
项目名称栈、队列与杨辉三角
专业班级软件工程工科试验班
学号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
};
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
{
capacity = 10;//初始栈的大小
size = 0;//初始元素的数量
elements = new T[capacity];//建立指针
}
template
bool Stack
{
if(size == 0)
return true;
else
return false;
}
template
T Stack
{
return elements[size - 1];
}
template
void Stack
{
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
{
ensureCapacity();//入栈前进行栈是否溢出的判断
elements[size++] = value;
}
template
T Stack
{
return elements[--size];
}
template
int Stack
{
return size;
}
#endif
*************************************
TestStack.cpp
*************************************
#include
#include"Stack.h"
using namespace std;
int main()
{
Stack
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);
}