第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

想要編寫一個(gè)關(guān)于棧類模板的程序,請(qǐng)問有了解的大佬嗎,要求如下:

想要編寫一個(gè)關(guān)于棧類模板的程序,請(qǐng)問有了解的大佬嗎,要求如下:

C++ C
守候你守候我 2022-04-21 15:11:34
要求 (1)帶一個(gè)表示堆棧長(zhǎng)度的參數(shù)的構(gòu)造函數(shù)(2)不帶參數(shù)的構(gòu)造函數(shù),默認(rèn)對(duì)棧長(zhǎng)度為10(3)有入棧push、出棧pop等操作(4)析構(gòu)函數(shù)
查看完整描述

1 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

下邊都是我自己寫的,都是經(jīng)過編譯的,調(diào)試用的main函數(shù)給注釋掉了
不過遺憾是沒有寫注釋,不過函數(shù)名字見名知意,希望你會(huì)滿意。

用數(shù)組作為儲(chǔ)存結(jié)構(gòu)的順序棧
#include<iostream>
#include<assert.h>
using namespace std;
const int INCREMENT = 20;

template <class T>
class SeqStack
{
public:
SeqStack(int size = 50);
~SeqStack();
void Push(T x);
bool Pop(T& e);
bool IsEmpty();
bool IsFull();
int Length();
bool getTop(T& x);
void MakeEmpty();
void Output();
private:
T* elements;
int top;
int maxSize;
void overflowProcess();
};

template <class T>
SeqStack<T>::SeqStack(int sz)
{
top = -1;
maxSize = sz;
elements = new T[maxSize];
assert(elements != NULL);
}

template <class T>
SeqStack<T>::~SeqStack()
{
delete []elements;
}

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

template <class T>
bool SeqStack<T>::Pop(T &e)
{
if(IsEmpty())
{
return false;
}
else
{
e = elements[top--];
return true;
}
}

template <class T>
bool SeqStack<T>::IsEmpty()
{
if(top == -1)
return true;
return false;
}

template <class T>
bool SeqStack<T>::IsFull()
{
if(top == maxSize -1)
{
return true;
}
return false;
}

template <class T>
bool SeqStack<T>::getTop(T &x)
{
if(IsEmpty())
{
return false;
}
x = elements[top];
}

template <class T>
int SeqStack<T>::Length()
{
return (top+1);
}

template <class T>
void SeqStack<T>::MakeEmpty()
{
top = -1;
}

template <class T>
void SeqStack<T>::overflowProcess()
{
T* newElems = new T[maxSize+INCREMENT];
if(newElems == NULL)
{
cerr << "Memory allocate error!" << endl;
exit(1);
}
for(int i=0;i<=top;i++)
{
newElems[i] = elements[i];
}
maxSize = maxSize + INCREMENT;
delete []elements;
elements = newElems;
}

template <class T>
void SeqStack<T>::Output()
{
int i = 0;
if(!IsEmpty())
{
cout << "---top---" << endl;
for(i=top;i>=0;i--)
{
cout << elements[i] << endl;
}
cout << "---base---" << endl;
}
}

/*int main()
{
SeqStack<int> s;
int i=0;
int e;
for(;i<60;i++)
{
s.Push(i*2);
}
cout << "length:" << s.Length() << endl;
s.Output();
return 0;
}*/

用鏈表作為儲(chǔ)存結(jié)構(gòu)的鏈?zhǔn)綏?br/>#include<iostream>
#include<assert.h>
using namespace std;
const int INCREMENT=20;

template <class T>
class StackNode
{
public:
StackNode(T _data,StackNode<T> *link = NULL)
{
data = _data;
next = link;
}
StackNode(StackNode<T> *link = NULL)
{
next = link;
}
StackNode<T> *next;
T data;
private:
};

template <class T>
class LinkStack
{
public:
LinkStack(){top = NULL;}
~LinkStack(){makeEmpty();}
bool isEmpty(){return (top == NULL);}
bool push(T x);
bool pop(T &x);
int getSize();
bool getTop(T &e);
void outPut();
void makeEmpty();
private:
StackNode<T>* top;
};

template <class T>
void LinkStack<T>::makeEmpty()
{
StackNode<T> *p;
while(top!=NULL)
{
p = top;
top = top->next;
delete p;
}
}

template <class T>
bool LinkStack<T>::push(T x)
{
StackNode<T> *e = new StackNode<T>(x);
if(!e)
{
cerr << "Memory allocate error!" << endl;
return false;
}
e->next = top;
top = e;
return true;
}

template <class T>
bool LinkStack<T>::pop(T &x)
{
if(!isEmpty())
{
x = top->data;
StackNode<T> *e = top;
top = top->next;
delete e;
return true;
}
return false;
}

template <class T>
bool LinkStack<T>::getTop(T &x)
{
if(!isEmpty())
{
x = top->data;
return true;
}
return false;
}

template <class T>
int LinkStack<T>::getSize()
{
StackNode<T> *p = top;
int count = 0;
while(p!=NULL)
{
count++;
p = p->next;
}
return count;
}

template <class T>
void LinkStack<T>::outPut()
{
StackNode<T> *p = top;
cout << "---top---" << endl;
while(p!=NULL)
{
cout << p->data << endl;
p = p->next;
}
cout << "---base---" << endl;
};

/*int main()
{
LinkStack<char> s;
char e;
int a = 65;
for(int i=0;i<5;i++)
{
s.push(char(a+i));
}
s.outPut();
s.makeEmpty();
s.outPut();
for(int i=0;i<6;i++)
{
s.pop(e);
cout << s.getSize()<< endl;
s.outPut();
}
return 0;
}*/



查看完整回答
反對(duì) 回復(fù) 2022-04-24
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)