#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(此时栈为空);
}
}
}
我回答的这么仔细,楼主你知道这么点分数有点 你明白的
希望对楼主有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)