欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言 算法与数据结构 顺序栈 基本操作及案例

程序员文章站 2024-03-23 09:57:58
...

C语言 算法与数据结构 顺序栈 基本操作及案例

实验要求:

实现顺序栈的栈空、栈满、入栈、出栈、获得栈顶元素基本功能

main.cpp

#include"ListStack.c"

int main()
{
    system("color f5");
    system("title 顺序栈的基本操作 Dev: Ice2Faith");
    printf("---------------------------------\n\n");
    printf("\t顺序栈的基本操作\n\n");
    printf("\tDev: Ice2Faith\n\n");
    printf("---------------------------------\n\n");
    printf("任意键继续\n>/ ");
    getch();
    StackList * S=DefultStack();
    int num;
    char exit='c';
    do
    {
        system("cls");
        printf("请输入元素进栈,以-999结束:\n>/ ");
        scanf("%d",&num);
        while(num!=-999)
        {
            Push(S,num);
            scanf("%d",&num);
        }
        printf("\n\n正在为您出栈:\n>/ ");
        while(Pop(S,&num))
        {
            printf("->%d",num);
        }
        printf("\n\n退出请输入 * ,否则重新测试:\n>/ ");
        exit=getch();
    }while(exit!='*');
    free(S);
    return 0;
}

ListStack.h

#ifndef _ListStack_H_
#define _ListStack_H_
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
#include <math.h>
#include<conio.h>
#define MAXSIZE 1024
#define TRUE 1
#define FALSE 0

typedef int elemtype;
typedef struct
{
    elemtype data[MAXSIZE];
    int top;
} StackList;

StackList * DefultStack();
int IsEmpty(StackList * S);
int IsFull(StackList * S);
int Push(StackList * S,elemtype x);
int Pop(StackList * S,elemtype * x);
void VcantStack(StackList * S);
int GetTop(StackList * S,elemtype * x);


#endif

ListStack.c

#include"ListStack.h"

StackList * DefultStack()
{
    StackList * p=(StackList *)malloc(sizeof(StackList));
    p->top=-1;
}
int IsEmpty(StackList * S)
{
    return S->top==-1;
}
int IsFull(StackList * S)
{
    return S->top==MAXSIZE-1;
}
int Push(StackList * S,elemtype x)
{
    if(IsFull(S))
        return 0;
    S->data[++S->top]=x;
    return 1;
}
int Pop(StackList * S,elemtype * x)
{
    if(IsEmpty(S))
        return 0;
    *x=S->data[S->top--];
    return 1;
}
void VcantStack(StackList * S)
{
    S->top=-1;
}
int GetTop(StackList * S,elemtype * x)
{
    if(IsEmpty(S))
        return 0;
    *x=S->data[S->top];
    return 1;
}