文档详情

数据结构实验4顺序栈的基本操作及应用.doc

发布:2018-06-29约3.78千字共5页下载文档
文本预览下载声明
实验3 顺序栈的基本操作及应用 实验目的 帮助学生理解栈结构的特点即后进先出。 2.掌握栈的顺序存储结构和基本操作,重点掌握入栈和弹栈操作。验证所学的算法和数据结构完成该程序并上机运行测试。给定的字符回文是指正读反读均相同的字符序列,如abba和ab db a均是回文,但good不是回文。 alindrome(char *str) /*判别字符 sqstack S; } 注:题目1程序清单 /*****************sqstack.h***********************/ /************顺序栈类型定义***********/ #define INITSIZE 100 typedef int ElemType; typedef struct { ElemType *base;/*栈顶指针,又是存储元素的一维数组*/ int top; /*栈顶指针,记录栈顶的下一个位置*/ int stacksize; /* 记录存储空间的尺寸*/ }sqstack; /***********函数声明**************/ void initstack(sqstack *S); int getlen(sqstack S); int gettop(sqstack S,ElemType *e); int push(sqstack *S, ElemType x); int pop(sqstack *S, ElemType *e); int emptystack(sqstack S); void print(sqstack S); /*************函数定义***********/ /**构造空栈**/ void initstack(sqstack *S) {/*构造一个空栈由指针S指出。*/ S-base= __(1)___; if (!S-base) {printf(OVERFLOW!); exit(1);} S-top=__(2)__; S-stacksize = INITSIZE; } /**求栈长操作**/ int getlen(sqstack S) { return (__(3)___); } /**取栈顶元素操作**/ int gettop(sqstack S,ElemType *e) { if(S.top == 0) return 0; _____(4)____________; return 1; } /**压栈**/ int push(sqstack *S, ElemType x) {/*向栈顶插入元素x,成功返回1,失败返回0*/ if(S-top == S-stacksize) /*栈已满*/ { S-base = ___(5)______; if(!S-base) { printf(OVERFLOW!); return 0;} S-stacksize ++; } /*插入*/ ____(6)_______; ____(7)___________; return(1); } /**弹栈**/ int pop(sqstack *S, ElemType *e) {/*若栈空, 则返回0*/ if(S-top==0) return 0; /*删除*/ ______(8)___________; ______(9)____________; return 1; } /**判栈空**/ int emptystack(sqstack S) /*判栈S为空栈时返回值为1, 反之为0*/ { return(____(10)____); } /**输出栈元素**/ void list(sqstack S) {/*从栈底元素输出到栈顶元素*/ int i = 0; if(emptystack(S)) {printf(none!\n); return;} while(iS.top) { printf(%4d,S.base[i]); i++; } printf(\n); } /***************** sqstack.c文件*************** **/ ______(11)___________ void menu() { printf(******************menu***************\n); printf( 0:
显示全部
相似文档