#include <iostream>
using namespace std;
#define ElemType int
typedef struct LNode{
ElemType data;
struct LNode *next;
}Node;
//链栈
class ListStack{
private:
Node *head;
int list_stack_size;
Node * curr;
public:
ListStack()
{
list_stack_size = 0;
head = curr = NULL;
}
bool push(ElemType e); //入栈
void pop();
bool isEmpty();
ElemType Top();
};
bool ListStack::push(ElemType e)
{
Node *current = (Node *)malloc(sizeof(Node));
if(!current)
{
cout<<"入栈失败\n";
return false;
}
current->data = e;
current->next = NULL;
if(!head)
{
head = current;
curr = current;
}else
{
curr->next = current;
curr = current;
}
this->list_stack_size++;
return true;
}
void ListStack::pop()
{
Node *prev, *current = head;
if(!head->next)
{
head = NULL;
return;
}
while(current)
{
if(current->next)
{
prev = current;
current = current->next;
}
else
break;
}
this->curr = prev;
this->list_stack_size--;
prev->next = NULL;
}
bool ListStack::isEmpty()
{
return head == NULL;
}
ElemType ListStack::Top()
{
Node *current = head;
while(current->next)
{
current = current->next;
}
return current->data;
}
int main()
{
ListStack stack;
int e;
cin>>e;
while(e)
{
stack.push(e % 2);
e /= 2;
}
while(!stack.isEmpty())
{
cout<<stack.Top();
stack.pop();
}
cout<<endl;
return 0;
}
分享到:
相关推荐
1.请使用链栈实现通用数制转换程序:将任意一个十进制数转换成p进制的数。(p分别取2,8,16) 2. 假定一个单向循环链表来表示队列(即循环链队),该队列只设一个队尾指针rear,不设队首指针,试编写下列各种运算...
链栈实现源码,分别用C、C++、JAVA实现
//用链栈实现链队列逆置 //Wpl #include "linkstack.h" //将链栈基本操作包括进来 typedef struct node /*定义链队列结点类型*/ { datatype data; struct node *next; }linkqueue; typedef struct /*封装队头指针...
数据结构实验-括号匹配的检验-链栈实现
运用链栈实现进制的转换,是老师布置的课堂作业,对栈和链表的学习有帮助
链栈的实现链栈的实现链栈的实现链栈的实现链栈的实现
链式存储的栈表示和实现源码,包括链栈的初始化、进栈、出栈、取栈顶元素等操作。
本文实例为大家分享了C++利用链栈实现表达式求值的具体代码,供大家参考,具体内容如下 #include typedef int Status; typedef char Cstack; #define OK 1 #define ERROR 0 typedef struct StackNode { Cstack ...
反序输出- 链栈
使用栈解决老鼠迷宫问题 使用“拆墙”法生成迷宫 可以逐步演示,自动演示,用户控制 附带实验报告
C++语言开发的链栈,使用指针开发,初学者可以作为参考
采用C++语言实现利用顺序栈、链栈将10进制数转为2、8、16进制数。 通过本编程实例,可以进一步了解到顺序栈和链栈之间区别和联系,体会两者的异同,进一步加深知识印象,是不错的练习素材哦。
实现插入,创建,删除,等基本操作。 链栈C++源文件 以链式实现栈的算法
数据结构中链栈的实现,C语言在VC6.0下编译通过
用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)
上面的压缩包里含有源代码和代码思路的介绍PPT。用的是C++(含有少量C)用的是链式栈模板实现的,计算器有良好的用户界面。可以输入表达式,进行加减乘除、乘方、开方、求余等一系列运算,还可进行多次运算。
数据结构-链栈(C语言实现)
压缩包内为栈的工程包;工程包括顺序栈、链栈的类的定义与实现;附适当注释;完全面向对象,类封装;测试类中用(纯)虚函数实现多态。
用堆栈实现中缀表达式转后缀,并计算后缀表达式的结果。