スタックチェーンストアの実装
ストレージ構造スタックは、リンクスタックと呼ばれ、実際には単一のリンクリストです。挿入および削除操作は、スタック・チェーン・スタックの最上位で行うことができます。トップスタックポインタは、リストの先頭にあるべきです
データ構造:
typedef struct SNode *Stack;
struct SNode{
ElementType Data;
struct SNode *Next;
};
ステップ(1)スタックが初期化される(確立された空のスタック)
(2)スタックを判定した場合にSが空であります
Stack CreateStack()
{ /*构建一个堆栈的头结点,返回指针*/
Stack S;
S = (Stack)malloc(sizeof(struct SNode));
S -> Next = NULL;
return S;
}
(2)それが空と判定されたか否か
int IsEmpty(Stack s)
{
/* 判断堆栈S是否为空,若为空函数返回整数1,否则返回0*/
return (S -> Next == NULL);
}
(3)スタックにデータ要素
void Push(ElementType item, Stack S){
/* 将元素item压入堆栈 S */
struct SNode *TmpCell;
TmpCell = (struct SNode *)malloc(sizeof (struct SNode));
TmpCell -> Element = item;
TmpCell -> Next = S -> Next;
S -> Next = TmpCell;
}
//链表不需要判别是否满了
ElementType Pop(Stack S)
{ /* 删除并返回堆栈S的栈顶元素 */
struct SNode *FirstCell;
ElementType TopElem;
if( IsEmpty(S) ) {
printf("堆栈空"); return NULL;
}else{
FirstCell = S-> Next;
S->Next = FirstCell -> Element;
free(FirstCell);
return TopElem;
}
}