“链栈”实际代码实现【物联网1132-11】

#include<iostream.h>         

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

template<class T>
class LinkStack
{
public:
	 LinkStack(){top=NULL;}
	 ~LinkStack();
	 void Push(T x);
	 T Pop();
	 T GetTop(){if(top!=NULL)return top->data;};
	 int Empty(){top==NULL?return 1:return 0;};
private:
	 STU<T> * top;
};  

template<class T>
class LinkStack<T>::Push(T x)
{
	s=new STU;
	s->data=x;
	s->next=top;
	top=s;
}

template<class T>
class LinkStack<T>::Pop()
{
	STU<T> *p;
	T x;
	if(top=NULL)throw"Wrong";
	x=top->data;
	p=top;
	top=top->next;
	delete p;
	return x;
}

int main()
{
    LinkStack<int>s1;
    int m;
    do{
    cout<<"-------------------------"<<endl;
    cout<<"输入1开始入栈"<<endl;
    cout<<"输入2开始弹栈"<<endl;
    cout<<"输入3开始读取栈顶"<<endl;
    cout<<"输入4开始判断是否空"<<endl;
    cin>>m;
    switch(m)
    {
        case 1:
            cout<<"请输入入栈的元素值"<<endl;
            cin>>a;
            s1.Push(a);
            break;
        case 2:
            cout<<"此操作为出栈"<<endl;
            s1.Pop();
            break;
        case 3:
            int v;
            cout<<"此操作为读取栈顶"<<endl;
            s1.GetTop();
            break;
        case 4:
            cout<<"此操作为判断栈为空"<<endl;
            s1.Empty();
            break;
    }
    }while(1);
    return 0;
}

时间: 2024-10-07 06:26:39

“链栈”实际代码实现【物联网1132-11】的相关文章

java实现链栈

前面学习了java实现顺序栈:http://www.cnblogs.com/lixiaolun/p/4644134.html 接下来,学习java实现链栈. 链栈类代码: package linkedstack; public class LinkStack { private Element base; private Element top; class Element { public Object data; public Element next; } /** * 初始化栈 * */

数据结构:链栈

栈的定义: 当单链表限定只能在头部进行插入和删除操作的时候,就是链栈.同时把栈顶放在单链表的头部,使单链表的头指针和栈顶指针top合二为一,所以对于链栈,就不再需要头结点了.这时对链栈的push也就相当于单链表的头插法. 同时对链栈来说,基本不存在栈满的情况,除非内存已经没有可以使用的空间了,对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top==NULL的时候. 链栈的代码实现: #include <iostream> #include <stdlib.h> usi

java使用链栈实现数制转换

java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedstack; public class LinkStack { private Element base; private Element top; class Element { public Object data; public Element next; } /** * 初始化栈 * */ pu

数据结构 --- 链栈(栈的链式存储结构)

工程目录结构: common.h: 1 //#ifndef __common_h__ 2 //#define __common_h__ 3 4 #define OK 1 5 #define ERROR 0 6 #define TRUE 1 7 #define FALSE 0 8 9 #define MAXSIZE 20 10 11 typedef int Status; //函数的返回结果,OK.ERREO.TRUE.FALSE 12 typedef int ElemType; //结点数据域的

看数据结构写代码(9)链栈的实现

在写链栈的时候 和 顺序栈一样 犯了两个错误: 一个是 在 入栈 和 进栈顶时候 忘记 操作 linkstack.len 了,另一个是 在写 stackClear 的时候 犯了一个 低级的内存错误. 这两个问题 都是 粗心造成的. 希望 引以为戒 在做下一个例子:数值转换时,又发现了一个问题:在 stackPop 没有返回 pop元素的值.唉  欢迎指出代码不足 下面上代码: // LinkStack.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"

13 一个完整的链栈代码

项目结构: main.cpp: #include <iostream> #include<stdio.h> #include<stdlib.h> #include "function_for_LinkStack.h" using namespace std; int main() { TestLinkStack(); return 0; } function_for_LinkStack.h: #ifndef FUNCTION_FOR_LINKSTAC

【小白成长撸】--链栈(C语言版)

1 // 链栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <stdio.h> 6 #include <stdlib.h>//malloc的头文件 7 8 typedef struct line_stack//栈包装 9 { 10 int x; 11 struct line_stack *next; 12 }link; 13 14 void pushes(link **top, int

链栈的实现

链栈即链式栈,也就是说我们不用再考虑空间的大小,可随心所欲的进行数据的插入/删除了.和顺序栈一样,仍然要保持其stack的特性,只在一端进行插入和删除,后进先出. 示例代码: #ifndef _LINKSTACK_H #define _LINKSTACK_H typedef int ElemType; typedef int Status; typedef struct linkStack { ElemType data; struct linkStack * top; }linkStack;

链栈-书上习题

元素的入栈出栈 链栈: 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 struct stack 5 { 6 char data; 7 stack *next; 8 }; 9 stack* initstack() /*为栈头指针申请内存*/ 10 { 11 stack *s=new stack; 12 s->next=NULL; 13 return s; 14 } 15 int isempt