weixin_57924330
2021-06-16 11:43
采纳率: 40%
浏览 22

数据结构用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条)

相关推荐 更多相似问题