实验内容:
- 编写一个程序实现顺序栈的各种基本运算。
- 实现队列的链式表示和实现。
实验步骤:
1.初始化顺序栈 - 插入元素
- 删除栈顶元素
- 取栈顶元素
- 遍历顺序栈
- 置空顺序栈
- 初始化并建立链队列
- 入链队列
- 出链队列
- 遍历链队列
1、栈的顺序表示和实现
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int StackElementType;
//----- 栈的顺序存储表示 -----
#define Stack_Size 100
#define STACKINCREMENT 10
typedef struct
{
StackElementType elem[Stack_Size]; //用来存放栈中元素的一维数组
int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/
}SeqStack;
/*初始化顺序栈函数*/
void InitStack(SeqStack *S)
{
/*构造一个空栈S*/
S->top = -1;
}
/*判栈空*/
int IsEmpty(SeqStack *S) /*判断栈S为空栈时返回值为真,反之为假*/
{
return(S->top==-1?TRUE:FALSE);
}
/*入栈函数*/
int Push(SeqStack *S,StackElementType x)
{
//请完成本函数的功能
if(S->top==Stack_Size-1) return (FALSE);/*栈已满*/
S->top++;
S->elem[S->top] = x;
return (TRUE);
}
/*出栈函数*/
int Pop(SeqStack *S,StackElementType *x)
{
/* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */
//请完成本函数的功能
if(S->top==-1)
return (FALSE);
else
{
*x = S->elem[S->top];
S->top--;
return (TRUE);
}
}
/*获取栈顶元素函数*/
int GetTop(SeqStack *S,StackElementType *x)
{
/* 将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 */
//请完成本函数的功能
if(S->top == -1)
return (FALSE);
else
{
*x = S->elem[S->top];
return (TRUE);
}
}
int StackDisplay(SeqStack