首页 > 代码库 > (郝斌讲学)数据结构学习篇(四)---栈的CRUD操作

(郝斌讲学)数据结构学习篇(四)---栈的CRUD操作

栈类似于箱子。

静态栈、动态栈。

 

关于栈的操作

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

typedef struct Node
{
	int data;
	struct Node *pNext;
}NODE, *PNODE;

typedef struct Stack
{
	PNODE pTop;
	PNODE pBottom;
}STACK, *PSTACK;

void init(PSTACK);
void push(PSTACK, int);
void traverse(PSTACK);
bool empty(PSTACK);
bool pop(PSTACK, int *);
void clear(PSTACK p);

int main(void)
{
	STACK s;
	int val;

	init(&s);
	push(&s, 1);
	push(&s, 2);
	push(&s, 3);
	push(&s, 4);
	push(&s, 5);
	push(&s, 6);
	push(&s, 7);
	traverse(&s);

	if(pop(&s, &val))
	{
		printf("出栈成功,出栈的元素是 %d \n", val);
	}
	else
	{
		printf("出栈失败\n");	
	}
	traverse(&s);

	clear(&s);
	if(pop(&s, &val))
	{
		printf("出栈成功,出栈的元素是 %d \n", val);
	}
	else
	{
		printf("出栈失败\n");	
	}


	return 0;
}

//完成一个栈的初始化
void init(PSTACK p)
{
	p->pTop = (PNODE)malloc(sizeof(NODE));
	if(NULL == p->pTop)
	{
		printf("动态内存分配失败\n");
		exit(-1);
	}
	else
	{
		p->pBottom = p->pTop;
		p->pTop->pNext = NULL;
	}
	
}

void push(PSTACK p, int val)
{
	PNODE pNew = (PNODE)malloc(sizeof(NODE));
	pNew->data = http://www.mamicode.com/val;>

栈主要用于表达式求值,缓冲处理,迷宫,函数调用,中断...


(郝斌讲学)数据结构学习篇(四)---栈的CRUD操作