スタックチェーンストアの実装

スタックチェーンストアの実装

ストレージ構造スタックは、リンクスタックと呼ばれ、実際には単一のリンクリストです。挿入および削除操作は、スタック・チェーン・スタックの最上位で行うことができます。トップスタックポインタは、リストの先頭にあるべきです

データ構造:

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;

	}

}
公開された28元の記事 ウォンの賞賛3 ビュー1893

おすすめ

転載: blog.csdn.net/qq_44045101/article/details/104069285