链表栈实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mxiaomi/article/details/17551777

链表栈实现,代码如下:

// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

typedef struct STNode
{
	int data;
	int size;
	STNode* next;
}stNode;

void InitStack(stNode* top);
int IsEmpty(stNode* top);
int PushStack(stNode* top, int elem);
int PopStack(stNode* top, int* elem);

int _tmain(int argc, _TCHAR* argv[])
{
	int elem = 0;
	stNode* stpTop = (stNode*)malloc(sizeof(stNode));
	InitStack(stpTop);
	PushStack(stpTop, 1);
	PushStack(stpTop, 2);

	while(stpTop->size > 0)
	{
		PopStack(stpTop, &elem);
		cout<<"elem="<<elem<<endl;
	}

	system("pause");
	return 0;
}

void InitStack(stNode* top)
{
	top->data = 0;
	top->size = 0;
	top->next = NULL;
}

int IsEmpty(stNode* top)
{
	if(NULL == top->next && top->size == 0)
		return 1;
	return 0;
}

int PushStack(stNode* top, int elem)
{
	stNode* stpNode = (stNode*)malloc(sizeof(stNode));
	if(NULL == stpNode)
		return 0;
	top->size ++;
	stpNode->data = elem;
	stpNode->next = top->next;
	top->next = stpNode;
	return 1;
}

int PopStack(stNode* top, int* elem)
{
	if(IsEmpty(top))
		return 0;
	stNode* stpNode = (stNode*)malloc(sizeof(stNode));
	if(NULL == stpNode)
		return 0;
	top->size --;
	stpNode = top->next;
	*elem = stpNode->data;
	top->next = stpNode->next;
	free(stpNode);
	return 1;
}


猜你喜欢

转载自blog.csdn.net/mxiaomi/article/details/17551777
今日推荐