c 언어 로 스 택 구현

2193 단어 데이터 구조
스 택 은 후진 에서 먼저 나 온 데이터 구조 로 스 택 은 두 가지 저장 구조 가 있 습 니 다. 순서 저장 과 체인 저장 입 니 다.
스 택 의 순서 저장 구 조 는 순서 스 택 이 라 고 약칭 한다.
순서 스 택 의 c 언어 구현:
#define STACKSIZE 100
typedef int DataType;

typedef struct  
{
	DataType data[STACKSIZE];
	int top; //    , -1 ,      
}SeqStack;

bool InitStack(SeqStack *pSS)
{
	pSS = (SeqStack *)malloc(sizeof(SeqStack));
	if (pSS == NULL)
		return false;

	pSS->top = -1;
	return true;
}

bool IsEmptyStack(SeqStack *pSS)
{
	if (pSS->top == -1)
		return true;
	else
		return false;
}

bool IsFullStack(SeqStack *pSS)
{
	if (pSS->top == (STACKSIZE - 1))
		return true;
	else
		return false;
}

bool PushElement(SeqStack *pSS, DataType dData)
{
	if (IsFullStack(pSS))
		return false;

	pSS->top++;
	pSS->data[pSS->top] = dData;
	return true;
}

bool PopElement(SeqStack *pSS, DataType *pData)
{
	if (IsEmptyStack(pSS))
		return false;

	*pData = pSS->data[pSS->top];
	pSS->top--;
	return true;
}

bool GetTopElement(SeqStack *pSS, DataType *pData)
{
	if (IsEmptyStack(pSS))
		return false;

	*pData = pSS->data[pSS->top];
	return true;
}

스 택 의 체인 저장 구 조 는 체인 스 택 이 라 고 약칭 한다.
체인 스 택 의 c 언어 구현:
typedef int DataType;

typedef struct node
{
	DataType data;
	struct node *next;
}LinkStack;

bool InitStack(LinkStack *pTop)
{
	pTop = (LinkStack *)malloc(sizeof(LinkStack)); //pTop          ,                
	if (pTop == NULL)
		return false;

	pTop->next = NULL;
	return true;
}

bool IsEmptyStack(LinkStack *pTop)
{
	if (pTop->next == NULL)
		return true;
	else
		return false;
}

bool PushElement(LinkStack *pTop, DataType dData)
{
	LinkStack *p = NULL;
	p = (LinkStack *)malloc(sizeof(LinkStack));
	if (p == NULL)
		return false;

	p->data = dData;
	p->next = pTop->next;
	pTop->next = p;
	return true;
}

bool PopElement(LinkStack *pTop, DataType *pData)
{
	LinkStack *p;
	if (IsEmptyStack(pTop))
		return false;

	p = pTop->next;
	*pData = p->data;
	pTop->next = p->next;
	free(p);
	return true;
}

bool GetTopElement(LinkStack *pTop, DataType *pData)
{
	if (IsEmptyStack(pTop))
		return false;

	*pData = pTop->next->data;
	return true;
}

좋은 웹페이지 즐겨찾기