【Aha】算法篇之队列,栈

  • 队列
  • 先进先出的数据结构
  • 代码详情:将输入的数“排队”。每次从最前面拿两个,第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");
}

猜你喜欢

转载自blog.csdn.net/qq_42735631/article/details/81328933