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