栈的基本 *** 作的C语言程序

栈的基本 *** 作的C语言程序,第1张

#include <stdio.h>

#include <stdlib.h>

#define MAX 1024///栈使用数组模拟,MAX是最大元素个数

typedef int DataType ///数据域使用整形

typedef struct _stack

{

DataType data[MAX]///存放数据

int top ///栈顶指针

}stack

///初始化

int initStack(stack (*s))

{

return emptyStack(s)

}

///数据压栈,成功返回1,失败返回0

int push(stack (*s), DataType d)

{

if ((*s).top >= MAX - 1) //栈已满

{

printf("栈已满,不能压栈\n")

return 0

}

//数据压栈

(*s).top++

(*s).data[(*s).top] = d

return 1

}

///数据出栈,成功返回1,d指向的区域存储d出的数据,失败返回0

int pop(stack (*s), DataType *d)

{

if ((*s).top <= -1)

{

printf("栈为空,不能出栈\n")

return 0

}

//出栈

*d = (*s).data[(*s).top]

(*s).top--

return 1

}

///清空栈

int emptyStack(stack (*s))

{

(*s).top = -1

return 1

}

int main(int argc, char** argv)

{

stack s

int i, d

initStack(&s)

//压栈

for (i = 0i <1025i++)

{

push(&s, i)

}

//清空

emptyStack(&s)

for (i = 0i <10i++)

{

push(&s, i)

}

//出栈

for (i = 0i <11i++)

{

pop(&s, &d)

printf("%d\n", d)

}

return 0

}

楼主

随机数可以用rand产生

现在我主要讲一下链表产生栈的方法(那个数据类型的我觉的你可以搞定,假定为整数型)

strct **

{

** **;

……

** **;

next **;

}**;定义一个结构数组

caozuo(int x,intj)

{

if(0==(x%2)) %偶数

{

j--

退栈 *** 作(删掉一个结构数组)

}

else

{

j++;

生成栈(增加一个结构数组)

}

}

main()

{

int j=0%用来检查,栈为空,则给出提示信息

for(i=1i<=20i++) %测试j=20次

{int x;

scanf(“”);

while(输入检查);(如果不合格则重新输入)

scanf(“”);

x=随机数;(自己用rond生成,可以用时间控制随机数)

caozuo(x,j)

if(0==j)

{

printf(此时栈为空);

}

}

}

我回答的这么仔细,楼主你知道这么点分数有点 你明白的

希望对楼主有帮助


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12062926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存