c语言判断栈是否为满函数 判断栈满的条件

C语言!!!栈

#define STACK_SIZE 100 //定义栈容量为100

仙桃网站建设公司成都创新互联,仙桃网站设计制作,有大型网站制作公司丰富经验。已为仙桃近千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的仙桃做网站的公司定做!

int contents[STACK_SIZE]; //定义数组contents用作栈

int top = 0; //定义并初始化栈顶指针为0

//函数作用:清空栈

void make_empty(void)

{

top = 0; //直接将栈顶指针置0

}

//函数作用:判断栈是否为空

bool is_empty(void)

{

return top == 0; //返回top是否等于0

}

//函数作用:判断栈是否已满

bool is_full(void)

{

return top == STACK_SIZE; //返回top是否等于STACK_SIZE

}

//函数作用:向栈中压入一个元素i

void push(int i)

{

if(is_full()) //如果栈已满

stack_overflow(); //执行栈上溢操作

else //否则可以入栈

contents[top++] = i; //向栈中压入i,然后将栈顶指针+1

}

//函数作用:弹出栈顶元素并返回

int pop(void)

{

if(is_empty()) //如果栈为空

stack_underflow(); //执行栈下溢操作

else //否则可以出栈

return contents[--top]; //返回栈顶元素,然后将栈顶指针-1

}

c语言链条栈怎么判断满了没

因为堆栈是链式栈,是否满栈取决于堆存储的大小。堆空间耗尽时,可以狭义地理解为栈满。

那么在编程时,可以用一个变量保存栈元素的个数。栈是否满,取决于申请动态内存时的返回值,如

Stack

*p

=

(Stack

*)malloc(sizeof(Stack));,若(p

==

NULL),则栈满。

求用C语言编写一个程序实现顺序栈初始化,出栈,入栈,判栈空,判栈满,急需,谢谢

#define STACK_SIZE 100

#define PUSH_POP_SUCCESS 1

#define PUSH_POP_ERROR 0

struct _stackbuf {

int _collection[STACK_SIZE];

int _top;

};

typedef struct _stackbuf S_STACK;

typedef unsigned int u_int_f;

// 入栈

u_int_f push(S_STACK *stack, int d){

if (stack-_top = STACK_SIZE) return PUSH_POP_ERROR;

stack-_collection[stack-_top++] = d;

return PUSH_POP_SUCCESS;

}

// 出栈

u_int_f pop(S_STACK *stack, int *e){

if (!stack-_top) return PUSH_POP_ERROR;

*e=stack-_collection[--(stack-_top)];

return PUSH_POP_SUCCESS;

}

int main(){

S_STACK stack = { {0},0 };

push(stack, 1);

push(stack, 2);

push(stack, 3);

int gv = 0;

pop(stack, gv);

printf("%d\n", gv);

system("PAUSE");

return 0;

}

分别写函数实现初始化栈、入栈、出栈、判断栈空、判断栈满。例如入栈序列为1 2 3 4 5,出栈则为5 4 3 2 1

1、初始化栈

/*功能:初始化栈

*函数名:InitStack

*返回值:void

*/

void InitStack(stack *p)

{

p-top=-1;

}

2、判断栈为满

/*功能:判断栈为满

*函数名:IsFull

*返回值:为满——真1,非满——假0

*/

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p-top)

{

return TRUE;

}else

{

return FALSE;

}

}

3、判断栈为空

/*功能:判断栈为空

* 函数名:IsEmpty

*返回值:为空——真1,非空——假0

*/

BOOL IsEmpty(stack *p)

{

if(-1==p-top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

*函数名:push

*返回值:成功TRUN 失败FALSE

*注:不能为满,否则进栈失败

*/

BOOL push(stack *p,StackType data)//p=s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p-buf[++p-top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

*函数名:pop

*返回值:出栈成功TRUE 失败FALSE

*/

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p-buf[p-top--];//优先级-大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(s);

int num=0;

printf("请输入");

scanf("%d",num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(s,value))

{

printf("%d",value);

}

printf("\n");

}


分享标题:c语言判断栈是否为满函数 判断栈满的条件
文章位置:http://pwwzsj.com/article/hhcphj.html