大话数据结构——栈的链式存储结构

#include<iostream>



//#include<time.h>

//#include <stdlib.h>



using namespace std;



#define OK 1

#define TRUE 1

#define FALSE 0

#define ERROR 0



typedef int status;//返回的状态值

typedef int elemtype;//节点里数据的类型



//每一个节点的数据结构

typedef struct stacknode

{

	elemtype data;//节点的数据

	stacknodeptr next;//指向下一个节点的指针.

}stacknode,*stacknodeptr;



//top的数据结构

typedef struct linlstack

{

	stacknodeptr top;//指向栈顶元素的指针.

	int count;//元素的个数

}linlstack;



//进栈操作

//将值e压入栈L中

status push_stack(linlstack *L,elemtype e)

{

	stacknodeptr p;//定义一个指向节点的指针

	p=(stacknodeptr)malloc(sizeof(stacknode));//开辟动态内存

	p->next=L->top;//将该节点的指针指向原来的栈顶元素

	p->data=e;//将e的值赋给现在的栈顶元素

	L->top=p;//将top指针指向现在的栈顶元素

	L->count++;//计数的值加一

	return OK;

}



//出栈操作

//将栈L中的栈顶元素弹出到e中

status pop_stack(linlstack *L,elemtype &e)

{

	if(L->count==0)//若栈为空栈则返回错误指示

		return ERROR;

	e=L->top->data;//将栈顶元素的数据给e

	stacknodeptr p;//定义一个节点指针

	p=L->top;//将指针指向原来的栈顶元素

	L->top=L->top->next;//将原来的栈顶元素下面的一个元素的地址给top

	L->count--;//计数减一

	free(p);//将弹出栈的元素释放内存空间

	return OK;

}



int main()

{





	system("pause");

	return 1;



}

  

你可能感兴趣的:(数据结构)