数据结构之顺序栈的算法实现C语言菜单版

期末数据结构实验考察我选的是顺序栈的算法实现,结合其他博客便创作了这篇文章,以供大家参考。如有错误,请斧正!!!

一、设计目的与内容

顺序栈的算法实现:重点在于理解栈的先进后出的特性,回顾课程中对栈的具体应用,例如数制转换、表达式的求值、括号匹配等应用。

二、算法的基本思想

引入了栈底指针base!
抽象类型定义:
typedef struct {
ElemType *base; // 栈底指针
ElemType *top; // 栈顶指针
int stack_size; // 栈的最大长度
} SqStack;

三、主要功能设计与实现

  1. void menu()
    功能:显示菜单
void menu()
{
   
   
   printf("==========================顺序栈的算法实现==========================\n");
   printf("**********************1.创建新栈     2.遍历栈**********************\n");
   printf("**********************3.取栈顶       4.销毁栈**********************\n");
   printf("**********************5.取栈长度     0.退出**********************\n");
}
  1. Create(S)
    功能:先初始化然后再创建新栈
Status Create(SqStack *S)
{
   
   
	int n,e,i;
	printf("初始化栈S......\n");
    InitStack(S);
	printf("成功初始化\n");
    printf("输入栈的长度 :");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
   
   
		printf("请输入第%d个元素:",i);
        scanf("%d", &e);
        PushStack(S, e);
    }
    printf("栈为空吗?\n");

    if (EmptyStack(S)) {
   
   
        printf("Yes!\n");
    } else {
   
   
        printf("No!\n");
    }
	return 1;
  1. StackTraverse(S)
Status StackTraverse(SqStack *S) {
   
   
    ElemType *p;

    if (S->top == S->base) {
   
   
        printf("Stack is NULL.\n");
        return 0;
    }
    p = S->top;
    // 由栈顶依次向下遍历
	printf("栈顶到栈低元素依次为:");
    while (p > S->base) {
   
   
        p--
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值