首页 > 其他分享 >数据结构练习笔记——链式栈的设计与实现

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

时间:2023-07-21 09:33:40浏览次数:32  
标签:linkstack int top 笔记 next snode 链式 数据结构

链式栈的设计与实现

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

相关文章

  • TypeScript 学习笔记
    什么是TypeScript?TypeScript是JavaScript的一个超集,支持ECMAScript6标准,它可以编译成纯javaScript,可以运行在任何浏览器上。安装TypeScriptnpminstall-gtypescript安装完成后我们可以使用tsc命令来执行TypeScript的相关代码tsc-vVersion5.1.6新建一个a......
  • Git 学习笔记
    Git学习笔记起步安装#在ubuntu上安装sudoaptinstallgit-all初次运行Git前的配置安装完git之后,要做的第一件事就是设置你的用户名和邮件地址,因为每一个git提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:gitconfig--globaluser.name"lockegogo......
  • 硬件笔记之黑苹果Ventura使用Drop DMR table配合disableIOMapperMapping quirks解决无
    0x00概述关键词:VT-d, appleVTD, 黑苹果,英特尔wifi蓝牙无法打开,AX210,WIFI6E,disableIOMapper,disableIOMapperMapping/*板U配置=>技嘉z590Master+10900kOS=>Ventura13.x引导=>OpenCore0.9.2蓝牙WIFI=>板载Intel®Wi-Fi6EAX210支持wifi6和蓝牙5.......
  • 快速幂·学习笔记
    快速幂是一个在O(log2n)的时间内计算ab的技巧,相比直接暴力计算O(n)的时间复杂度快了许多。原理在计算ab的时候,将b转换为kn*2n+kn-1*2n-1+……+k2*22+k1*21+k0*20(kn,kn-1,……k2,k1,k0取0或1),运用a(m+n)=am·an所以ab=a(kn*2n+kn-1*2n-1+……+k2*22+k1*21+k0*20)=kna2^n+kn-1a2^n-1+…......
  • webpack学习笔记
    webpack:学习目标:1知道能做什么,不能做什么学会webpack常用功能2了解大致原理知道webpack怎么工作,webpack结果文件怎么阅读3根据业务合理配置webpack 学习注意:1不要死记写法,记住规律2不要试图学会所有功能3了解原理,但没必要深入原理 课程安排:概念讲解+基本......
  • 7.20 类 学习笔记
    7.20学习笔记类的复用:可以通过创建多个对象来使用同一个类,避免重复编写相似的代码。继承:子类可以继承父类的属性和方法,从而实现代码的重用和扩展性。把类赋值给一个真正的实体,之后就具备其属性定义一个非model类采矿程序及架构学习泊松比:水平方向的变形/垂直方向变形......
  • LTE学习笔记六:MIMO多天线技术
    不断提高空中接口的吞吐率是无线制式的发展目标。MIMO多天线技术是LTE大幅提升吞吐率的物理层关键技术。MIMO技术和OFDM技术一起并称为LTE的两大最重要物理层技术。MIMO技术很多原理,涉及一些线性代数知识(我也不想学怎么用latex什么的写矩阵了),内容也很多,我学习LTE主要是想了......
  • 微波射频学习笔记4--------板材选取的考量
    1.介电常数(看成本、尺寸和损耗的要求)介电常数ε越大:损耗越大;波长越短;线宽越窄(各项变化都不小)实际介电常数都比官方提供数据稍大。2.损耗角正切(越小越好)正切角Tanθ越大:损耗越大;波长越长;线宽越宽(对线尺寸影响很小,可以忽略)3.板材厚度(看厂商提供厚度、产品尺寸和损耗要求)......
  • Mysql学习笔记(一)
    一、基础概念1.术语数据库(DB)数据库管理系统(DBMS)SQL(StructuredQueryLanguage)2.关系型数据库(二维表)二、SQL1.分类DDL(DataDefinitionLanguage)数据定义语言(操作数据库、表、字段)DML(DataManipulationLanguage)数据操作语言(增删改)DQL(DataQueryLanguage)......
  • 阅读 | 《费曼学习法》读书笔记 | 2023年7月20日
    小虾米原创作品,转载请注明出处:https://www.cnblogs.com/shrimp-can/p/17567931.html 你是否花了很多时间精力学习,效果却始终不好?你是否学习了很多知识,但是当需要表述或写作的时候就像“茶壶里倒饺子,倒不出来”?你是否按步就班的学习,但是学了之后就忘了? 这都是因为没有掌握......