栈和队列自主学习作业

#include<iostream>
//#include<stdio.h>
//#include<stdlib.h>
using namespace std;
template<class T>
class Stack
{
public:
	T data;
	Stack<T>* link;
	Stack(const T&el,Stack* ptr=NULL)
	{data=el;link=ptr;}
};
template<class T>
class pstack
{
private:
	Stack<T>* top;
	int size;
public:
	pstack(T s=0)
	{top=NULL;size=0;}
	~pstack(){clear();}
	void clear()
	{
		while(top!=NULL)
		{
			Stack<T>* temp=top;
			top=top->link;
			delete temp;
		}
		size=0;
	}
	void push(const T item)
	{
		Stack<T>* tmp=new Stack<T>(item,top);
		top=tmp;
		size++;
	}
	T pop()
	{
		T temp;
		if(size==0)
		{cout<<"栈为空,不能进行删除!"<<endl;
		exit(0);}
		else
		{
			temp=top->data;
			Stack<T>* tmp=top;
			top=top->link;
			delete tmp;
			size--;
		}
		return temp;
	}
	T Top()
	{
		T temp;
		if(size==0)
			{cout<<"栈为空,不能进行删除!"<<endl;
		exit(0);}
		else
		{temp=top->data;}
		return temp;
	}
	bool isempty()
	{
		if(size==0) return true;
		else
			return false;
	}
};
int main()
{
	int a,b,i=1,d;
	pstack<int> c;
	while(i!=2)
	{
		cout<<"输入要转换的十进制数:";
		cin>>a;
		cout<<"输入转换为的进制:";
		cin>>b;
		if(b>=2&&b<=9)
		{
			while(a)
			{
				d=a%b;
				c.push(d);
				a=a/b;
			}
			while(!c.isempty())
			{cout<<c.pop();}
			cout<<endl;
		}
		else
		{cout<<"输入错误!"<<endl;}
		cout<<"*******************\n";
		cout<<"###1、继续###\n";
		cout<<"###2、退出###\n";
		cout<<"*******************\n";
		cout<<"请选择:";
		cin>>i;
		system("cls");
	}
}

数据结构第三章课后习题5第3小题算法设计

一、内容:设计算法,把十进制整数转换为二至九之间的任一进制输出。
二、源代码:(如上)
三、运行结果图示:

四、心得体会:
        经过对第三章《栈和队列》的课前自主学习,对栈和队列有了初步的了解,其中栈和队列的主要特性分别为“后进先出”、“先进先出”。而且栈分为顺序栈和链栈,队列也分为循环队列和链队列。在预习中也了解到,顺序栈本质上是顺序表的简化,链栈的结点结构和单链表的结点结构相同;队列则是特殊的线性表链队列基本操作本质上也是单链表操作的简化。所以这些知识点之间存在着共同点也存在着各自的特点,在学习中做到比较性理解和记忆可能可以更好地掌握,特别要注意其中的区别,不要弄混。
        而本次实验内容便是对栈的初始化、入栈、出栈、取数、判空等基本操作的考察,其中要注意的是本题中还考察了对十进制整数各进制转换的计算和操作。在本次试验中我遇到了不少的困难,由于是还处于初步的自学阶段,所以对栈的一些基本操作原理及处理方法还不是很掌握,所以花费的时间比较多。但是在自我学习的过程中,不但加深了自己对这些知识的了解,还提高了自己的调试并修改程序、查询资料的能力和意识。所以这样的学习方式还是可以很好地锻炼自主学习能力的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值