作业帮 > 综合 > 作业

求助高手 关于数据结构栈与队列的实现

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 02:49:56
求助高手 关于数据结构栈与队列的实现
栈与队列的实现1: ①分别创建最大长度为10的链式栈与循环顺序队列。②将1、2、3、4、5、6依次入栈,然后若栈不空,边弹栈,边打印输出,边入队,直到入队完毕。 ③若队列不空,将元素边出队,边打印输出,边入栈。 栈与队列的实现2: 栈的简单应用:数制转换问题 将十进制数N转换为r进制的数,其转换方法利用辗转相除法:以N=3456,r=8为例转换方法如下: N N / 8 (整除) N % 8(求余) 3467 433 3 低 433 54 1 54 6 6 6 0 6 高 所以:(3456)10 =(6563)8 我们看到所转换的8进制数按底位到高位的顺序产生的,而通常的输出是从高位到低位的,恰好与计算过程相反,因此转换过程中每得到一位8进制数则进栈保存,转换完毕后依次出栈则正好是转换结果。 算法思想如下:当N>0时重复1,2 1. 若 N≠0,则将N % r 压入栈s中 ,执行2;若N=0,将栈s的内容依次出栈,算法结束。 2. 用N / r 代替 N
/*以下是一个简单的顺序队列,循环队列可在此基础上做改动即可,链式则要增加结构体*/ #include #define SIZE 50/*队列最大长度*/ #define ELEMTYPE float/*队列中元素的类型,可任意*/ #define N 55/*欲向队列中插入的元素个数,若大于SIZE,则大于SIZE的部分无法插入*/ ELEMTYPE queue[SIZE];/*顺序型队列*/ int head,rear,count; void init(){ head=0;/*队头*/ rear=0;/*队尾*/ count=0;/*队列中元素个数*/ } void add(ELEMTYPE e){/*入队列*/ if(count