目录

  • 1 第一章 绪论
  • 2 第二章 线性表
    • 2.1 单链表的案例讲解——学生信息管理系统
  • 3 第三章 栈和队列
    • 3.1 顺序栈的代码
    • 3.2 链栈的代码
    • 3.3 栈的案例源代码
    • 3.4 顺序队列的代码
    • 3.5 链队的代码
  • 4 串、数组、广义表
    • 4.1 顺序串的源代码
    • 4.2 链串的源代码
    • 4.3 串部分的课件
    • 4.4 数组部分的课件
    • 4.5 广义表的课件
  • 5 树与二叉树
    • 5.1 二叉链表法存储树代码与课件
  • 6 图
    • 6.1 图的课件
    • 6.2 图的相关源代码
  • 7 查找
    • 7.1 查找的课件
    • 7.2 查找的相关源代码
顺序栈的代码

#include <stdio.h>
#include "stdlib.h"
#define MaxSize 100
typedef char ElemType;//元素类型
typedef struct
{
    ElemType elem[MaxSize];
    int top;
}SeqStack;//顺序栈的类型定义

void InitStack(SeqStack *&S)//初始化栈
{
    S=(SeqStack *)malloc(sizeof(SeqStack));
    S->top=-1;
}
void DestroyStack(SeqStack *&S)//销毁栈
{
    free(S);
}
bool StackEmpty(SeqStack *S)//判断栈是否为空
{
    return S->top==-1;
}
bool Push(SeqStack *&S,ElemType e)//进栈
{
    if(S->top==MaxSize-1)
    return false;
    S->top++;
    S->elem[S->top]=e;
    return true;
}
bool Pop(SeqStack *&S,ElemType &e)//出栈
{
    if(S->top==-1)
    return false;
    e=S->elem[S->top];
    S->top--;
    return true;
}
bool GetTop(SeqStack *S,ElemType e)//获取栈顶元素
{
    if(S->top==-1)
    return false;
    e=S->elem[S->top];
    return true;
}
int main()
{
    SeqStack *S;
    InitStack(S);
    Push(S,'a');
    Push(S,'b');
    Push(S,'c');
    Push(S,'d');
    printf("栈为%s\n",StackEmpty(S)?"空":"非空");
    ElemType e;
    /*Pop(S,e);
    printf("%c出栈\n",e);
        Pop(S,e);
    printf("%c出栈\n",e);
        Pop(S,e);
    printf("%c出栈\n",e);
        Pop(S,e);
    printf("%c出栈\n",e); */
    while(!StackEmpty(S))
    {
        Pop(S,e);
        printf("%c出栈\n",e);
     }
    printf("栈为%s",StackEmpty(S)?"空":"非空");
 }