定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
1个回答

/*

供参考!

*/

# include

# include

# include

typedef struct Node

{

x05int data;

x05struct Node * pNext;

}NODE,* PNODE;

typedef struct Stack

{

x05PNODE pTop;

x05PNODE pBottom;

}STACK,* PSTACK;

void init(PSTACK pS);//栈初始化

void push(PSTACK pS,int val);//压栈

void traverse(PSTACK pS,int len);//遍历栈

int pop(PSTACK pS);//出栈

bool empty(PSTACK pS);//判断栈是否为空

int main(void)

{

x05STACK s;

x05printf("初始化栈:.n");

x05init(&s);

x05printf("压栈.n");

x05printf("请输入要压入栈的元素个数:t");

x05int len;

x05scanf("%d",&len);

x05int i,val;

x05for (i=0; ipTop = (PNODE)malloc(sizeof(NODE));

x05if (NULL == pS->pTop)

x05{

x05x05printf("动态内存分配失败!n");

x05x05exit(-1);

x05}

x05else

x05{

x05x05pS->pBottom = pS->pTop ;

x05x05pS->pTop->pNext = NULL;

x05}

x05return;

}

void push(PSTACK pS,int val)

{

x05PNODE pNew = (PNODE)malloc(sizeof(NODE));

x05pNew->data = val;

x05pNew->pNext = pS->pTop ;

x05pS->pTop = pNew;

x05return ;

}

void traverse(PSTACK pS,int len)

{

x05int i,val;

x05

x05for(i=0; ipTop == pS->pBottom)

x05{

x05x05return true;

x05}

x05else

x05x05return false;

}

int pop(PSTACK pS)

{

x05int val;

x05if (empty(pS))

x05{

x05x05return 1;

x05x05printf("栈为空!程序结束n");

x05x05exit(-1);

x05}

x05else

x05{

x05x05PNODE r = pS->pTop;

x05x05val = r->data ;

x05x05pS->pTop = r->pNext;

x05x05free(r);

r = NULL;

x05x05return val;

x05}

}

/*

在vc++6.0中的输出结果是:

--------------------

初始化栈:.

压栈.

请输入要压入栈的元素个数:3

第1个入栈元素:4

第2个入栈元素:5

第3个入栈元素:6

遍历栈.

6 5 4

-----------------------

*/