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

数据结构用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);
    }
    点赞 打赏 评论
  • CSDN专家-Fay 2021-06-16 11:51

    堆栈特点先进后出,队列特点先进先出,

    代码较多,建议参考

    C语言堆栈:https://blog.csdn.net/AntonioZC666/article/details/106288815/

    C语言队列:https://blog.csdn.net/qq_42338808/article/details/83247086

    点赞 打赏 评论
  • 有问必答小助手 2021-06-18 16:48

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m

    点赞 打赏 评论

相关推荐 更多相似问题