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