数据结构——利用栈来实现进制转换

这篇具有很好参考价值的文章主要介绍了数据结构——利用栈来实现进制转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 顺序栈实现十进制转换二进制

#include<stdlib.h>
#define Max 100
//定义顺序栈结构 
typedef  struct{
	    int data[Max];
		int top;         
}SeqStack; 
//建立空栈 
SeqStack   *initStack()
{
	SeqStack   *S=(SeqStack*)malloc(sizeof(SeqStack));
	if(S==NULL)
	return NULL;
	S->top=-1;
	return S;
}
//入栈 
int push_stack(SeqStack  *S,int x)
{
	if(S->top+1==Max)
	return 0;
	S->top++;
	S->data[S->top]=x;
	return 1;
}
int pop_stack(SeqStack  *S,int *x)
{
	if(S->top==-1)
	return 0;
	*x=S->data[S->top];
	S->top--;
	return 1;
}
//出栈 
#include<stdio.h>
int main()
{
	int x,a;
	printf("Enter x:");
	scanf("%d",&x);
	SeqStack *S=initStack();
	while(x!=0)
	{
	   push_stack(S,x%2);
		x=x/2;
	 } 
	 while(S->top!=-1)
	 {
	 	pop_stack(S,&a);
	 	printf("%d",a);
	 }
}

栈实现进制转换,数据结构,c语言,c++文章来源地址https://www.toymoban.com/news/detail-735501.html

 2.链栈实现十进制转换二进制

#include<stdlib.h>
#define Max 100
//定义链栈结构 
typedef  struct node{
	    int data;
		struct node *next;  
}LinkStack; 
//建立空栈 
LinkStack   *initLStack()
{
	LinkStack   *top=(LinkStack*)malloc(sizeof(LinkStack));
	if(top)
	top->next=NULL;
	return top;
}
//入栈 
int push_stack(LinkStack  *top,int x)
{
	LinkStack   *node=(LinkStack*)malloc(sizeof(LinkStack));
	if(node==NULL)
	return 0;
	node->data=x;
	node->next=top->next;
	top->next=node;
	return 1;
	}
int pop_stack(LinkStack  *top,int *x)
{
	LinkStack  *u;
	if(top->next==NULL)
	return 0;
    u=top->next;
    *x=u->data;
    top->next=u->next;
    free(u);
	return 1;
}
//出栈 
#include<stdio.h>
int main()
{
	int x,a;
	printf("Enter x:");
	scanf("%d",&x);
	LinkStack *top=initLStack();
	while(x!=0)
	{
	   push_stack(top,x%2);
		x=x/2;
	 } 
	 while(top->next!=NULL)
	 {
	 	pop_stack(top,&a);
	 	printf("%d",a);
	 }
	 return 0;
}

到了这里,关于数据结构——利用栈来实现进制转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构上机实验——栈和队列的实现、栈和队列的应用、进制转换、约瑟夫环问题

      1.利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。   2.利用循环队列实现.约瑟夫环问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人出圈;他的下一个人又从1开始报数,数到k的那个人出圈;依

    2024年02月08日
    浏览(30)
  • 数据结构-栈的运用-数的进制转换

    对于进制转换,其实是具有以下最初的思想 1-输入某一个十进制的数值 2-选择你所要进行的进制转换类型 3-将这个数的来进求余进制数并保留在数组中 4-将十进制的数字除以进制数 5-这是一个循环,直至该数小于零则结束 6-然后再让数组进行反向输出就能得到你所要转换的二

    2024年02月06日
    浏览(27)
  • 数据结构实战:利用JavaScript和Python实现链表

    本实战通过JavaScript和Python两种编程语言分别实现单链表数据结构。首先,介绍了链表的基本概念,包括结点(包含数据域和指针域)和链表结构(由多个结点按一定顺序链接而成)。在JavaScript部分,创建了LinkedList.js文件,定义了Node类和LinkedList类,实现了链表的增删查改等

    2024年02月01日
    浏览(37)
  • C++------利用C++实现二叉搜索树【数据结构】

    什么是二叉搜索树,二叉搜索树就是指左孩子永远比根小右孩子永远比根大。这个规则适用于所有的子树。 上面的就是一棵二叉搜索树,我们还可以发现这棵树走一个中序遍历序列是有序的,所以它又被称为二叉排序树。 二叉搜索树的操作主要分为以下几点,查找, 插入,

    2024年02月11日
    浏览(32)
  • 数据结构——前缀、中缀、后缀表达式实现和转换(Java)

    1.7.1 概念 它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于 运算符相对与操作数的位置 不同 前缀 表达式的运算符位于与其相关的 操作数之前 ;中缀和后缀同理。 平时我们 日常使用 并最为熟悉的就是中缀表达式。如: 1 + 2 *

    2024年02月05日
    浏览(40)
  • 【数据结构】利用顺序栈/链栈完成表达式求值(C语言实现)

    利用顺序栈完成表达式求值(将字符型转换为整型) 程序代码: #include stdio.h #include malloc.h #include stdlib.h #include math.h #define MAXSIZE 100 #define ElemType char #define LEN sizeof ( ElemType ) typedef struct {     ElemType * data;     int top; } SqStack ; void InitStack( SqStack * S ) {     S -data = ( ElemType *)

    2024年02月05日
    浏览(37)
  • 【JavaScript数据结构与算法】字符串类(计算二进制子串)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端(Node.js) 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力 n 年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目

    2024年02月05日
    浏览(27)
  • (二十八)ArcGIS空间数据的转换与处理——数据结构转换

    空间数据的来源很多,如地图、工程图、规划图、航空与遥感影像等,因此空间数据也有多种格式。根据应用需要,需对数据进行格式转换,不同数据结构间的转换主要包括矢量数据到栅格数据的转换和栅格数据到矢量数据的转换。利用数据格式转换工具,可以转换Raster、

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包