c语言中的队列和栈
队列是一种特殊的线性结构,他只允许在队列的首部(head)进行删除操作删除操作,这被称为“出队”,而在队列的尾部(tail)进行插入操作,这称为“入队”。他的原则被称为“先进先出”。
队列有三个基本元素,一个数组,两个变量(head,tail)。
可以将队列封装成一个结构体类型:
这里有一个简单的问题可以更好的理解队列:
有一串进过加密数字,要对其进行解密,规则为,首先将第一个数删除,接着再将第二个数放到这串数的末尾,再将第三个数删除并将第四个数放到这串数的末尾,再将第五个数删除,依次类推,直到剩下最后一个数,将最后一个数也删除。按照刚才的顺序把这些删除的数连在一起就是原来的数字。
解密的过程就像是将这些数排队,每次从前面拿两个,第一个扔掉,第二个放到尾部。
代码如下:
栈是一种先进后出的数据结构,限定为只能在一端进行插入和删除操作。向一个栈插入新元素又称进栈,入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
利用栈可以很容易判断一个字符串是否为回文来判断回文字符串:
如果一个字符串是回文的,那他就必须是中间对称的,我们可以将中点以前的字符全部入栈,然后将当前栈中的字符依次出栈,看能否与中点以后的字符一一匹配,如果可以,则说明这是一个回文字符串,否则就不是。
代码如下: