计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据结构与算法项目名称栈的基本操作班级计科一班学号姓名实验日期格式要求实验报告注意格式规范,要求在word中编写,文中不要有空行,统一使用A4页面。页边距:上2.5cm、下2cm、左2.5cm、右2cm。标题:宋体、四号字、加粗、1.5倍行距。正文:宋体、小四号字、1.2倍行距。一、实验目的与要求:(一)实验目的1.掌握栈的抽象数据类型。2.掌握实现栈的各种操作的算法。3.理解栈与递归的关系。(二)实验要求1.用C描述栈的每种操作在顺序栈或链栈上的实现。2.将建栈、初始化栈、判断栈是否非空、求栈的长度、输出从栈顶到栈底的元素分别定义为5个子函数,通过主函数实现对上述子函数的调用。3.输入数据:数据域(data)设定为整型。二、实验方法:(代码)#includestdio.h#includemalloc.h#definemaxlen100typedefstruct{intdata[maxlen];inttop;}SeqStack;//初始化空栈SeqStack*InitStack(SeqStack*S){S-top=-1;returnS;}//判断栈空intStackEmpty(SeqStack*S){if(S-top=0)return0;elsereturn1;//栈空时返回1,不空返回0}//入栈voidPush(SeqStack*S,intx){//printf(请输入入栈元素:);//scanf(%d,&x);if(S-topmaxlen-1&&S-top=-1){S-top++;S-data[S-top]=x;}elseprintf(出错);}//出栈voidPop(SeqStack*S){if(S-top=0)S-top--;elseprintf(出错);}//取栈顶元素intGetTop(SeqStack*S){if(S-top=maxlen-1&&S-top=0)return(S-data[S-top]);elseprintf(出错);}//输出栈顶元素voidprintstack(SeqStack*S){if(S-top=-1)return0;elsewhile(S-top-1){printf(%d,S-data[S-top]);S-top--;}}//数制转换问题voidConversion(SeqStack*S,intn,intd){InitStack(S);//初始化空栈if(n0)//若n为负数{printf(输入的数字必须超过0);return0;}if(!n)Push(S,0);//若n为零while(n)//若n正数{Push(S,n%d);n=n/d;}//if(!empty(S))//pop(S);}voidmain(){intx,i,j;SeqStack*S;SeqStackP;S=&P;InitStack(S);printf(请输入入栈元素:);scanf(%d,&x);while(x!=-1){Push(S,x);printf(请输入入栈元素:);scanf(%d,&x);}printstack(S);printf(\n\n);//进制转换printf(******进制转换******\n);printf(请输入十进制i整数转换为对应的j进制数:);scanf(%d%d,&i,&j);Conversion(S,i,j);printstack(S);printf(\n);}}}三、实验分析与小结得分(百分制)