データ構造順序スタック基本操作(C/C++実現)


データ構造順序スタック基本操作(C/C++実現)
注意:このコードは、デフォルトの操作を実行するために必要なデータをテストするために、必要に応じて関連データを自分で削除して変更することができます.
基本演算プロセスに関する
1.初期化スタック
2.スタックが空でないかどうかを判断する
3.要素が順次スタックに入る
4.スタックが空でないかどうかを判断する
5.出力スタックシーケンス
6.スタックsが空でないか否かを判断する
7.解放スタック
GitHubアドレス(.cppファイルと実行可能プログラムexeを含む)
データ構造GitHubアドレス
ソースコード(VS 2015、devC++コンパイラで実行)
#include "stdio.h"    
#include "stdlib.h"   
#include "io.h"  
#include "math.h"  
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /*           */

typedef int Status;
typedef char SElemType; /* SElemType          ,     char */

					   /*       */
typedef struct
{
	SElemType data[MAXSIZE];
	int top; /*        */
}SqStack;

Status visit(SElemType c)
{
	printf("%d ", c);
	return OK;
}

/*        S */
Status InitStack(SqStack *S)
{
	/* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */
	S->top = -1;
	return OK;
}

/*  S     */
Status ClearStack(SqStack *S)
{
	S->top = -1;
	return OK;
}

/*   S   ,   TRUE,    FALSE */
Status StackEmpty(SqStack S)
{
	if (S.top == -1)
		return TRUE;
	else
		return FALSE;
}

/*   S     ,      */
int StackLength(SqStack S)
{
	return S.top + 1;
}

/*     ,  e  S     ,   OK;    ERROR */
Status GetTop(SqStack S, SElemType *e)
{
	if (S.top == -1)
		return ERROR;
	else
		*e = S.data[S.top];
	return OK;
}

/*     e        */
Status Push(SqStack *S, SElemType e)
{
	if (S->top == MAXSIZE - 1) /*    */
	{
		return ERROR;
	}
	S->top++;				/*         */
	S->data[S->top] = e;  /*               */
	return OK;
}

/*     ,   S     , e    ,   OK;    ERROR */
Status Pop(SqStack *S, SElemType *e)
{
	if (S->top == -1)
		return ERROR;
	*e = S->data[S->top];	/*             e */
	S->top--;				/*        */
	return OK;
}

/*                   */
Status StackTraverse(SqStack S)
{
	int i;
	i = 0;
	while (i <= S.top)
	{
		visit(S.data[i++]);
	}
	printf("
"
); return OK; } int main() { int j; SqStack s; int e; /*1. */ InitStack(&s); printf("
"
); /*2. s */ printf("2. :%d(1: 0: )
"
, StackEmpty(s)); /*3. abcde*/ Push(&s, 'a'); Push(&s, 'b'); Push(&s, 'c'); Push(&s, 'd'); Push(&s, 'e'); printf("3.abcde
"
); /*4. s */ printf("2. :%d(1: 0: )
"
, StackEmpty(s)); /*5. */ printf("4. :"); StackTraverse(s); /*6. s */ printf("5. :%d(1: 0: )
"
, StackEmpty(s)); /*7. */ ClearStack(&s); printf("6. ,"); printf(" , :%d(1: 0: )
"
, StackEmpty(s)); /*Pop(&s, &e); printf(" e=%d
", e); printf(" :%d(1: 0: )
", StackEmpty(s)); //GetTop(s, &e); printf(" e=%d %d
", e, StackLength(s)); ClearStack(&s); printf(" , :%d(1: 0: )
", StackEmpty(s)); */
system("pause"); return 0; }