数据结构之栈实现
栈:一种抽象的数据结构,一种只允许在一端进行插入和删除的线性表,在该表中只允许进行插入和删除的一端称为栈顶(top),
另一端称为栈底(bottom)。
栈的插入操作称为入栈(push)
栈的删除操作称为出栈(pop)
栈中没有元素时,称为空栈
有如下特性:
1)只能从栈的顶端访问数据
2)数据以后进先出(Last In, First Out, LIFO)的策略进行数据的访问
创建栈有如下两种方法,一种是使用数组结构,另一种是使用链表结构,下面分别介绍其实现
以下以扑克牌洗牌和发牌为例来说明栈的出栈和入栈的概念。
一副扑克牌,有52张,分为黑桃、红心、方块和梅花四种花色。将该副牌重新洗牌后入栈,然后出栈分给四个人。以下通过两种方法实现
一、使用数组结构实现栈
代码如下:
注:
标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:
printf("Random numbers are: %i %i\n",rand(),rand());
因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。
为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。引自于:http://baike.baidu.com/view/3048977.htm