1647: 栈-基本操作(链式存储,不建议学生做)
金币值:2
定数:11
时间限制:1.000 s
内存限制:128 M
正确:1
提交:2
正确率:50.00% 命题人:
题目描述
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int */ /* 链栈结构 */ typedef struct StackNode { SElemType data; struct StackNode *next; } StackNode,*linkStack; Status visit(SElemType c) { printf("%d ",c); return OK; } /* 构造一个空栈S */ void InitStack(linkStack &S) { __________; } /* 把S置为空栈 */ Status ClearStack(linkStack &S) { linkStack p,q; p=S; S=NULL; while(p) { _____ } return OK; } /* 若栈S为空栈,则返回TRUE,否则返回FALSE */ Status StackEmpty(linkStack S) { if (_______) return TRUE; return FALSE; } /* 返回S的元素个数,即栈的长度 */ int StackLength(linkStack S) { ____________ } /* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */ Status GetTop(linkStack S,SElemType &e) { if(_______) return ERROR; __________; return OK; } /* 插入元素e为新的栈顶元素 */ Status Push(linkStack &S,SElemType e) { linkStack p=(linkStack)malloc(sizeof(StackNode)); p->data=e; ___________; /* 把当前的栈顶元素赋值给新结点的直接后继 */ ___________; /* 将新的结点s赋值给栈顶指针 */ return OK; } /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */ Status Pop(linkStack &S,SElemType &e) { linkStack p; if(StackEmpty(S)) return ERROR; e=S->data; ______; /* 将栈顶结点赋值给p*/ ______; /* 使得栈顶指针下移一位,指向后一结点 */ ______; /* 释放结点p */ return OK; } Status StackTraverse(linkStack S) { linkStack p; p=S; while(____) { visit(p->data); _______; } printf("\n"); return OK; } int main(void) { int i,n; linkStack s; SElemType e; InitStack(s); scanf("%d",&n); for(i=1; i<=n; i++) { scanf("%d",&e); Push(s,e); } printf("栈中从顶至底元素依次为:"); StackTraverse(s); Pop(s,e); printf("弹出的栈顶元素 e=%d\n",e); printf("栈空否:%d(1:空 0:否)\n",StackEmpty(s)); GetTop(s,e); printf("栈顶元素 e=%d 栈的长度为%d\n",e,StackLength(s)); ClearStack(s); printf("清空栈后,栈空否:%d(1:空 0:否)\n",StackEmpty(s)); return 0; }
输入格式
输入有2行:
第1行:待入栈数据元素个数n
第2行:n个数据元素,以空格间隔
第1行:待入栈数据元素个数n
第2行:n个数据元素,以空格间隔
输出格式
见样例
输入样例 复制
10
1 2 3 4 5 6 7 8 9 10
输出样例 复制
栈中从顶至底元素依次为:10 9 8 7 6 5 4 3 2 1
弹出的栈顶元素 e=10
栈空否:0(1:空 0:否)
栈顶元素 e=9 栈的长度为9
清空栈后,栈空否:1(1:空 0:否)