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;
}
上一篇: javascript实现贪吃蛇
下一篇: Js 面向对象动态添加标签页