数据结构练习笔记——链式栈的设计与实现

链式栈的设计与实现

【问题描述】采用链式存储结构实现栈的基本操作,并借助栈实现进制转换。
【输入形式】整数
【输出形式】二进制数
【样例输入】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;
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

posted @ 2023-07-21 09:24  某zhuan  阅读(64)  评论(0)    收藏  举报