文档介绍:数据结构栈与队列实验报告学院:数学与计算机学院班级:计算机科学与技术姓名:杨理源学号: 201310401069 实验三栈与队列一、实验目的: (1)熟练掌握栈和队列的结构以及这两种数据结构的特点、栈与队列的基本操作。(2)能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法; (3)熟练掌握链队列和循环队列的基本运算,并特别注意队列满和队列空的判断条件和描述方法; (4)掌握栈的应用; 二、实验要求: (1)给出程序设计的基本思想、原理和算法描述。(2)对源程序给出注释。(3)记录程序的运行结果,并结合程序进行分析。三、程序设计的基本思想、原理和算法描述: 四、实验内容: 1、利用栈的基本操作将一个十进制的正整数转换成 R 进制数据,并将其转换结果输出。#include <> #include <> #include <> #define stack_init_size 100 #define stackincrement 10 typedef struct sqstack { int *base; int *top; int stacksize; } sqstack; int StackInit(sqstack *s) { s->base=(int *)malloc(stack_init_size *sizeof(int)); if(!s->base) return 0; s->top=s->base; s->stacksize=stack_init_size; return 1;} int Push(sqstack *s,int e) { if(s->top-s->base>=s->stacksize) { s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int)); if(!s->base) return 0; s->top=s->base+s->stacksize; s->stacksize+=stackincrement; } *(s->top++)=e; return e;} int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;} int stackempty(sqstack *s) { if(s->top==s->base) { return 1;} else { return 0;}} int conversion(sqstack *s) { int n,e=0,flag=0; printf(" 输入要转化的十进制数: \n"); scanf("%d",&n); printf(" 要转化为多少进制: 2进制、 8进制、 16进制填数字! \n"); scanf("%d",&flag); printf(" 将十进制数%d 转化为%d 进制是: \n",n,flag); while(n) { Push(s,n%flag); n=n/flag; } while(!stackempty(s)) { e=Pop(s,e); switch(e) { case 10: printf("