qi-1596 2021-06-16 03:43 采纳率: 50%
浏览 29
已采纳

数据结构用c语言描述

实验目的:熟练掌握栈和队列的特点;掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用;掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用,掌握环形队列的入队和出队等基本操作;加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力。

实验内容:定义顺序栈,完成栈的基本操作:空栈、入栈、出栈、取栈顶元素;实现十进制数与八进制数的转换,十进制数与十六进制数的转换和任意进制之间的转换;定义链式队列,完成队列的基本操作:入队和出队。

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-16 03:50
    关注
    /*
    	十进制到其它进制的转换
    */
     
     
    # include <stdio.h>
    # include <malloc.h>
     
    # define N 8  //要转换成的进制
    # define INIT_SIZE 5  //栈的初始空间大小
    # define INC_SIZE 2  //栈空间增量
     
     
    //栈结构
    typedef struct
    {
    	int * base;  //指向栈底,也是栈空间的地址
    	int * top;  //始终指向有效元素的上一个位置
    	int initsize;   //栈的初始空间大小
    }Stack;
     
    void convert(int num);  //进制转换
    void inital_stack(Stack &s);   //初始化栈
    void push(Stack &s, int m);  //元素入栈
    void pop(Stack &s, int * val);  //元素出栈
     
    int main(void)
    {
    	int num;
    	printf("请输入一个十进制数 num = ");
    	scanf("%d", &num);
     
    	convert(num);
     
    	return 0;
    }
     
    //进制换换
    void convert(int num)
    {
    	int m;  //记录余数
    	int val;  //保存出栈元素
     
    	Stack s;
    	inital_stack(s);
     
    	while(0 != num)  //当商为0时结束
    	{
    		m = num % N;  //取模
    		push(s, m);
     
    		num = num / N;
    	}
     
    	printf("转换成%d进制为:", N);
    	while(s.top != s.base)
    	{
    		pop(s, &val);
    		printf("%d", val);
    	}
    	printf("\n");
    }
     
    //初始化栈
    void inital_stack(Stack &s)
    {
    	s.initsize = INIT_SIZE;
    	s.base = (int *)malloc(sizeof(int) * INIT_SIZE);
    	s.top = s.base;
    }
     
    //元素m入栈
    void push(Stack &s, int m)
    {
    	//判断栈是否满,满则增加栈的容量
    	if((s.top - s.base) >= s.initsize)
    	{
    		s.base = (int *)realloc(s.base, sizeof(int) * s.initsize + INC_SIZE);
    		s.initsize = s.initsize + INC_SIZE;
    	}
     
    	*(s.top) = m;
     
    	s.top ++;
    }
     
    //元素出栈
    void pop(Stack &s, int * val)
    {
    	s.top --;
    	 *val =	*(s.top);
    }

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    qi-1596 2021-06-21 06:36

    谢谢您啦

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部