定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/26 12:47:39
定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
/*
供参考!
*/
# 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
-----------------------
*/
供参考!
*/
# 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
-----------------------
*/
定义一个堆栈的类,有入栈,出栈输出栈中所有的元素的功能
设数据元素序列{a,b,c,d,e,f,g}的进堆栈操作和出堆栈操作可任意进行(排除堆栈为空时的出堆栈操作情况),下列哪
、定义一个函数,其功能是判断某一个数是否是素数.在主函数中调用该函数输出100~200之间的所有素数.
如何根据需要定义堆栈段的大小?
定义一个20个元素的数组,键盘输入20个元素,输出改组中具有偶素值且具有偶数下标的元素值.
设一个堆栈段共有100H个字节单元,堆栈的起始地址是1250H:0000H,若在堆栈中有5个字数据,求SS和SP的内容?
已知一个长度为100的一维数组,求数组中所有元素平均值并输出.
排列组合算法如何实现 一维数组 中元素的排列组合,并将其排列组合的所有情况输出?如:一个字符串数组 ABC;排列后输出:
"定义一个栈抽象类型,将数字序列(1,2,3)进行入堆栈操作,最后将这些数字进行出栈操作"帮个忙,解决下
定义一个函数,此函数的功能是求三个数的最大值,在主函数中输入三个数并调用此函数,最后输出最大值.
读出一个整数,统计并输出该数中2的个数.要求定义并调用函数countdigit(number,digit),它的功能是统
已知SS=1000H,SP=2000H堆栈段最后一个单元的物理地址为13000H 求堆栈段的断首物理地址 栈顶物理地址