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

数据结构用c语言描述

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

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-16 11: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);
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序