- 队列
- 先进先出的数据结构
-
代码详情:将输入的数“排队”。每次从最前面拿两个,第1 个扔掉,第 2 个放到尾部,直到最后一个数也被扔掉
//先进先出的数据结构————队列
#include<stdio.h>
struct queue
{
int data[100];//队列的主体,存储内容
int head;//队首
int tail;//队尾
};
int main()
{
struct queue q;
int i;
q.head=1;
q.tail=1;//初始化队列
for(i=1;i<=9;i++){
scanf("%d",&q.data[q.tail]);//依次向队列插入9个数
q.tail++;
}
while(q.head<q.tail){//当队列不为空时,循环
printf("%d ",q.data[q.head]);//打印队首
q.head++;//将队首出列
q.data[q.tail]=q.data[q.head];//0将新队首移到队尾
q.tail++;
q.head++;//再将队首出列
}
}
- 栈
- 后进后出的数据结构
- 代码详情:解密回文字符串
//后进先出数据结构#--#判断回文字符串————栈
#include<stdio.h>
#include<string.h>
int main()
{
char a[101],s[101];
int i,len,mid,next,top;
gets(a);//读入一行字符串
len=strlen(a);//求字符串长度
mid=len/2-1;//求字符串中点
top=0;//栈的初始化
for(i=0;i<=mid;i++){//将mid前的字符依次入栈
top++;
s[top]=a[i];
}
if(len%2==0)//判断字符串长度的奇偶数
next=mid+1;
else
next=mid+2;
for(i=next;i<=len-1;i++){//匹配
if(a[i]!=s[top])
break;
top--;
}
if(top==0)
printf("YES");
else
printf("NO");
}