永发信息网

C++数据结构创建栈

答案:1  悬赏:60  手机版
解决时间 2021-07-26 11:48

(一)建立一个空栈;对已经建立的栈进行插入、删除、取栈顶元素等基本操作。

提示:定义顺序栈的数据类型-顺序栈类SeqStack,包括入栈、出栈、取栈顶元素等基本操作。

const int StackSize=10;

template <class T>

class SeqStack

{

public:

SeqStack( ) ; //构造函数,栈的初始化

void Push(T x); //将元素x入栈

T Pop( ); //将栈顶元素弹出

T GetTop( ); //取栈顶元素(并不删除)

private:

T data[StackSize]; //存放栈元素的数组

int top; //栈顶指针,指示栈顶元素在数组中的下标

};

(二)建立一个空队列;对已经建立的队列进行插入、删除、组队头元素等基本操作。

提示:定义链队列的数据类型-链队列类LinkQueue,包括入队、出队、取队列头元素等基本操作。

template <class T>

struct Node

{

T data;

Node<T> *next;

};

template <class T>

class LinkQueue

{

public:

LinkQueue( ); //构造函数,初始化一个空的链队列

~~LinkQueue( ); //析构函数,释放链队列中各结点的存储空间

void EnQueue(T x); //将元素x入队

T DeQueue( ); //将队头元素出队

T GetQueue( ); //取链队列的队头元素

private:

Node<T> *front, *rear; //队头和队尾指针,分别指向头结点和终端结点

};

最佳答案
1、栈

#include <iostream>
using namespace std;

const int StackSize = 10;

template <class T>
class SeqStack
{
public:
SeqStack( ) ; //构造函数,栈的初始化
void Push(T x); //将元素x入栈
T Pop( ); //将栈顶元素弹出
T GetTop( ); //取栈顶元素(并不删除)
private:
T data[StackSize]; //存放栈元素的数组
int top; //栈顶指针,指示栈顶元素在数组中的下标
};

template <class T>
SeqStack<T>::SeqStack()
: top( 0 )
{ }

template <class T>
void SeqStack<T>::Push( T x )
{
data[top++] = x;
}

template <class T>
T SeqStack<T>::Pop()
{
return data[--top];
}

template <class T>
T SeqStack<T>::GetTop()
{
return data[top-1];
}

int main()
{
SeqStack<int> a;
a.Push( 1 );
a.Push( 2 );
a.Push( 3 );
cout << a.Pop();
cout << a.Pop();
cout << a.Pop();
}


2、队列

#include <iostream>
using namespace std;

template <class T>
struct Node
{
T data;
Node<T> *next;
};

template <class T>
class LinkQueue
{
public:
LinkQueue( ); //构造函数,初始化一个空的链队列
~LinkQueue( ); //析构函数,释放链队列中各结点的存储空间
void EnQueue(T x); //将元素x入队
T DeQueue( ); //将队头元素出队
T GetQueue( ); //取链队列的队头元素
private:
Node<T> *front, *rear; //队头和队尾指针,分别指向头结点和终端结点
};

template <class T>
LinkQueue<T>::LinkQueue()
:front( 0 ), rear( 0 )
{ }

template <class T>
LinkQueue<T>::~LinkQueue()
{
Node<T>* tmp;
while ( front ) {
tmp = front;
front = front->next;
delete tmp;
}
}

template <class T>
void LinkQueue<T>::EnQueue( T x )
{
Node<T>* tmp = new Node<T>;
tmp->data = x;
tmp->next = 0;
if ( !rear )
front = rear = tmp;
else {
rear->next = tmp;
rear = tmp;
}
}

template <class T>
T LinkQueue<T>::GetQueue()
{
return front->data;
}

template <class T>
T LinkQueue<T>::DeQueue()
{
Node<T>* tmp = front;
front = front->next;
T t = tmp->data;
delete tmp;
return t;
}

int main()
{
LinkQueue<int> a;
a.EnQueue( 1 );
a.EnQueue( 2 );
a.EnQueue( 3 );
cout << a.DeQueue();
cout << a.DeQueue();
cout << a.DeQueue();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
问问学堂里可以赚多少积分和经验?
三相对称负载做星形或三角形的计算
贷记卡逾期什么意思,贷记卡状态为止付是什么
怎样止住男友的性欲?
诺基亚3250的数据线和光盘有单卖的吗
丝路英雄里面使用迁城令时分城会有效果吗?
谁帮我查下11月8号广东到郑州的火车几点到
百家讲坛唐诗宋词,求五首唐诗宋词中吟咏秋天
翼年代记第三部哪里有的看呀
大话里制符职业 造的什么符文最强!?
那位大哥大姐谁有鬼吹灯online 封测激活码 能
历史题&政治题
天下WL70套适合疾wl吗?
一辆汽车从甲地到已地,若每小时行60千米.则要
谁能帮我翻译下这几个句子呀 中英都有
推荐资讯
现在很好的中锋鞋有哪些
Java程序编辑器
美少女战士只有五部吧。。没有第六部吧?直子
犬犬的哪些歌好听啊?
巴拉拉小魔仙经典台词,巴拉拉小魔仙的人物介
作文 其中反思400字和六年级600字各来一篇是
新股申购后几天上市,新股申购几天公布中签
弯矩和剪力的计算公式是什么.
怎么样退出魔秀主题,怎么从魔秀主题退回到手
岳飞《满江红》第一句是怒发冲冠.200字鉴赏
荣威rx5的车,手机中的视屏咱样在车载屏中看
体质有酸碱性之分吗?初次听说体质的酸碱性,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?