定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 23:00:28
定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
/*
供参考!
*/
# 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{
\x05\x05printf("动态内存分配失败!\n");
\x05\x05exit(-1);
\x05}
\x05else
\x05{
\x05\x05pS->pBottom = pS->pTop ;
\x05\x05pS->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{
\x05\x05return true;
\x05}
\x05else
\x05\x05return false;
}
int pop(PSTACK pS)
{
\x05int val;
\x05if (empty(pS))
\x05{
\x05\x05return 1;
\x05\x05printf("栈为空!程序结束\n");
\x05\x05exit(-1);
\x05}
\x05else
\x05{
\x05\x05PNODE r = pS->pTop;
\x05\x05val = r->data ;
\x05\x05pS->pTop = r->pNext;
\x05\x05free(r);
r = NULL;
\x05\x05return val;
\x05}
}
/*
在vc++6.0中的输出结果是:
--------------------
初始化栈:.
压栈.
请输入要压入栈的元素个数:3
第1个入栈元素:4
第2个入栈元素:5
第3个入栈元素:6
遍历栈.
6 5 4
-----------------------
*/