2017《面向对象程序设计》课程作业五

题目描述

  • 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
  • 学习数据结构栈的知识。

作业要求

  • 本次作业要求将程序写成.cpp和.h分离的形式
  • 根据设计的类图进行编码,搭建主体框架
  • 本次作业不要求实现核心的算法功能
  • 发表一篇博客,博客内容为:提供本次作业的github链接,对栈的知识学习探索。

代码

在上次作业,已经实现了编码:
代码地址

  • 代码结构(主体框架):

对栈的学习与探索

上次的作业,已经学习了栈的知识,并把它融入到了表达式的生成:

  • 类的声明
class stack//栈
{
private:int top;
		char ch[MAX];
public:void initstack(void);
	   void push(char *data);
	   char pop(void);
	   bool isempty(void);
	   stack() {};
	   ~stack() {};
};

-成员函数

//******stack*******
void stack::initstack(void)
{
	top = -1;
	int i = 0;
	for (i = 0; i < MAX; i++)ch[i] = NULL;
}

bool stack::isempty(void)
{
	if (top == -1)return true;
	else return false;
}

void stack::push(char *data)
{
	int len = strlen(data),i;
	top++;
	if (strlen(ch)+len >= MAX)cout << "The stack is full!" << endl;
	else 
		for (i = 0; i < len; i++) {
			ch[top] = data[len - i - 1];
			top++;
		}
	top--;
}

char stack::pop(void)
{
	char temp;
	if (isempty())cout << "The stack is empty!!" << endl;
	else {
		temp = ch[top];
		ch[top] = NULL;
		top--;
		return temp;
	}
}

栈的小结:

  • 栈是一种运算受限的线性表,栈的特点是后进先出,主要的功能是进栈和出栈。
  • 栈可以用链表或者数组实现,当内存足够时可以使用数组,用前先划定出一块内存来使用栈;当内存不足时可以使用链表,动态地使用内存。在这里我使用了数组。
  • 用一个top来标志栈顶,进栈时top++,元素入栈,出栈时输出栈顶元素,删除元素,top--。
  • 使用前先划定一个范围,过程中需要包括top是否超出所划定范围的判断。

完成体会

  • 因为这次作业的大部分要求,已经在第四次作业中完成,不止完成了框架,学习了栈,代码也已经编好。所以这次将框架提取出来,查找资料深入学习了一下栈,在这里总结了一下栈的特点用法。
  • 之前的代码已经分为.h和.cpp文件,为了使结构更清晰,我把主函数和成员函数也分离开来。
  • 对代码做了一次更新,添加了新学的构造函数和析构函数等。
原文地址:https://www.cnblogs.com/vancasola/p/6883899.html