免费速建网站,陕西省建设工程安全协会网站,wordpress最新列表,东莞建域名网站c栈 栈代码用线性表实现栈用链表实现栈 栈
栈#xff1a;先进后出 只对栈顶元素进行操作#xff0c;包括新元素入栈、栈顶元素出栈和查看栈顶元素#xff08;只支持对栈顶的增、删、查#xff09;。
代码
下述代码实现了栈及其接口 包括对栈顶的增、删、查以及查看栈的大… c栈 栈代码用线性表实现栈用链表实现栈 栈
栈先进后出 只对栈顶元素进行操作包括新元素入栈、栈顶元素出栈和查看栈顶元素只支持对栈顶的增、删、查。
代码
下述代码实现了栈及其接口 包括对栈顶的增、删、查以及查看栈的大小
用线性表实现栈
#include iostream
using namespace std;templatetypename Tclass Stack{
private:T *data;int size;int capacity;void resize();public:Stack() : data(new T[capacity]),size(0),capacity(10){}~Stack();void push(T element);T pop();T top() const;int getSize() const;
};templatetypename T
void StackT::resize(){int newCapacity 2*capacity;T *newData new T[newCapacity];for(int i 0; i size; i){newData[i] data[i];}delete[] data;data newData;capacity newCapacity;
}templatetypename T
StackT::~Stack(){delete[] data;
}templatetypename T
void StackT::push(T element){if(size capacity){resize();}data[size] element;
}templatetypename T
T StackT::pop(){if(size 0){throw std::underflow_error(Stack is empty);}return data[--size];
}templatetypename T
T StackT::top() const{if(size 0){throw std::underflow_error(Stack is empty);}return data[size-1];
}templatetypename T
int StackT::getSize() const{return size;
}
int main()
{Stackint st;st.push(1);st.push(2);st.push(3);cout st.getSize() endl;cout st.top() endl;st.pop();cout st.getSize() endl;cout st.top() endl; return 0;
}用链表实现栈
#include iostream
using namespace std;templatetypename Tclass Stack{
private:struct Node{T data;Node *next;Node(T d) : data(d),next(NULL){}};Node *head;int size;public:Stack() : head(NULL), size(0){}~Stack();void push(T element);T pop();T top() const;int getSize() const;
};templatetypename T
StackT::~Stack(){while(head){Node *temp head;head head-next;delete temp;}
}templatetypename T
void StackT::push(T element){Node *newNode new Node(element);newNode-next head;head newNode;size;
}templatetypename T
T StackT::pop(){if(head NULL){throw std::underflow_error(Stack is empty);}T result head-data;Node *temp head;head head-next;delete temp;size--;return result;
}templatetypename T
T StackT::top() const{if(head NULL){throw std::underflow_error(Stack is empty);}return head-data;
}templatetypename T
int StackT::getSize() const{return size;
}
int main()
{Stackint st;st.push(1);st.push(2);st.push(3);cout st.getSize() endl;cout st.top() endl;st.pop();cout st.getSize() endl;cout st.top() endl; }于 2024-01-26 第一次整理编写
学习时整理不当之处烦请指正 码字不易留个赞再走吧