【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");
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章