数据结构c语言实现进栈出栈及遍历
Posted 3 ERROR(s)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构c语言实现进栈出栈及遍历相关的知识,希望对你有一定的参考价值。
进栈出栈及遍历
一、栈的定义和特点
1.定义:限制在表的一端进行插入和删除的线性表,其中允许插入删除的为栈顶,另外一个为栈底。
2.特点:先进后出
二、定义结构体变量及主函数
代码如下(示例):
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node * pNext;
}N0DE , * PN0DE;
typedef struct Stack
{
PN0DE pTop;
PN0DE pBottom;
}STACK,* PSTACK; // PStack等价于 struct Stack *
void init (PSTACK); //函数声明
void push (PSTACK ,int );
void traverrse (PSTACK);
int main(void)
{
STACK S; //等价于struct Stack
init(&S);//初始化
push(&S,1);//进栈操作
traverrse(&S);//遍历操作
return 0;
}
}
三、初始化栈
1.思路分析
创建一个栈元素用p-Top指向它,若为空则分配失败,跳出程序。
若初始化成功则ps->pBottom=ps->pTop并且ps->pTop的pNext为空
代码如下(示例):
void init (PSTACK ps)
{
ps->pTop=(PN0DE)malloc(sizeof(N0DE));
if(NULL==ps->pTop)
{
printf("动态内存分配失败\\n");
exit(-1);
}
else
{
ps->pBottom=ps->pTop;
ps->pTop->pNext=NULL;
}
}
2.示意图
四、进栈操作
1.思路分析
新建一个栈元素,给他的数值域赋值,原来的栈顶变为新元素的pNext,栈顶ps->pTop指向新元素。
代码如下(示例):
void push(PSTACK ps,int val)
{
PN0DE pNew =(PN0DE)malloc(sizeof(N0DE));
pNew->data=val;
pNew->pNext=ps->pTop;
ps->pTop=pNew;
return;
}
2.示意图
五、遍历栈操作
定义一个临时变量p,让p等于栈顶元素,使用一个while循环,当p不等于栈底时循环输出元素的数据域,并且p指针下移。
代码如下(示例):
void traverrse (PSTACK ps)
{
PN0DE p =ps-> pTop;
while (p!=ps->pBottom)
{
printf("%d",p->data);
p=p->pNext;
}
return;
总结
本次的内容简单的介绍了栈的定义和特点,并且进行了一些栈的基本操作。
以上是关于数据结构c语言实现进栈出栈及遍历的主要内容,如果未能解决你的问题,请参考以下文章