题目描述
已知链栈类的定义、构造函数及main函数如下,请完成其余的成员函数实现。
template
class LinkStack
{
public:
LinkStack( ); //构造函数,置空链栈
~LinkStack( ); //析构函数,释放链栈中各结点的存储空间
void Push(T x); //将元素x入栈
T Pop( ); //将栈顶元素出栈
T GetTop( ); //取栈顶元素(并不删除)
bool Empty( ); //判断链栈是否为空栈
private:
Node
};
/
前置条件:栈不存在
输 入:无
功 能:栈的初始化
输 出:无
后置条件:构造一个空栈
/
template
LinkStack
{
top=NULL;
}
int main()
{
LinkStack
char ch;
while(1)
{
cin>>ch;
if(ch==’#’) break;
s.Push(ch);
}
cout<<”Gettop:”<
{
cout<
cout<
cout<<”Gettop:”<
catch(const char *ms){
cout<<”Gettop:”<
return 0;
}
输入
输出
样例输入
样例输出
Gettop:h
h g f d s a
Gettop:Downflow
提示
来源
提交
import java.util.Scanner;class Node {public Object data;public Node next;public Node() {this(null,null);}public Node(Object data) {this(data,null);}public Node(Object data, Node next) {this.data = data;this.next = next;}}class LinkStack{Node top;public LinkStack() {top = null;}public void push(Object x){top = new Node(x,top);}public Object pop() throws Exception {if(isEmpty()){throw new Exception("Downflow");}else {Node p = top;top = top.next;return p.data;}}public Object getTop() throws Exception {if(isEmpty()){throw new Exception("Downflow");}else {return top.data;}}public boolean isEmpty(){return top==null;}}public class Main {public static void main(String[] args) {LinkStack l = new LinkStack();Scanner sc = new Scanner(System.in);String s = sc.next();for (int i = 0; i < s.length(); i++) {if(s.charAt(i) == '#')break;l.push(s.charAt(i));}try{System.out.println("Gettop:"+l.getTop());} catch (Exception e) {System.out.println("Gettop:"+e.getMessage());}while (!l.isEmpty()){try {System.out.print(l.pop() + " ");} catch (Exception e) {System.out.println("Pop:"+e.getMessage());}}System.out.println();try{System.out.println("Gettop:"+l.getTop());} catch (Exception e) {System.out.println("Gettop:"+e.getMessage());}}}
