链式栈的设计与实现
【问题描述】采用链式存储结构实现栈的基本操作,并借助栈实现进制转换。
【输入形式】整数
【输出形式】二进制数
【样例输入】10
【样例输出】1010
#include <iostream>
using namespace std;
#include <stdlib.h>
struct snode{
int data;
snode *next;
};
typedef snode *linkstack;
void initStack(linkstack &top){
top=new snode;
top->next=NULL;
}//初始化,创建带头结点的链式栈
void push(linkstack &top,int e){
linkstack p;
p=new snode;
p->data=e;
p->next=top->next;
top->next=p;
}//进栈
bool stackEmpty(linkstack top){
if(top->next==NULL)
return true;
else
return false;
}//判断栈是否空
int pop(linkstack &top){
int e=top->next->data;
top->next=top->next->next;
return e;
}//出栈
void pop(linkstack &top,int &e){
e=top->next->data;
top->next=top->next->next;
}//出栈,通过e带出栈顶元素
int getTop(linkstack top){
return top->next->data;
}//获取栈顶元素
//----以上为链式栈的基本操作----
//----以下为借助栈实现十进制转换二进制----
void converse(int m,linkstack &s){
initStack(s);
if(m==0) push(s,m);
else
while(m){
push(s,m%2);
m=m/2;
}
}
int main(){
linkstack s;
int m;
cin>>m;
converse(m,s);
while(!stackEmpty(s)){
cout<<pop(s);
}
return 0;
}
记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。
标签:linkstack,int,top,笔记,next,snode,链式,数据结构 From: https://www.cnblogs.com/zhuannnn/p/17570389.html