小哈的QQ号 我的实现方法
#include <stdio.h>
int data1[100];
void cleandata(int data[],int n);
int main(){
int data1[100]={9,8,7,6,5,4,3,2,1};
int i=0,j,head=0,tail=8;
while(head<=tail){
printf("%d",data1[head]);
cleandata(data1,tail);
tail--;
}
return 0;
}
void cleandata(int data[],int n){
int i,temp;
temp=data[1];
for(i=0;i<n-1;i++){
data[i]=data[i+2];
}
data[i]=temp;
return;
}
#include <stdio.h>
int data1[100];
void cleandata(int data[],int n);
int main(){
int data1[100]={9,8,7,6,5,4,3,2,1};
int i=0,j,head=0,tail=8;
while(head<=tail){
printf("%d",data1[head]);
cleandata(data1,tail);
tail--;
}
return 0;
}
void cleandata(int data[],int n){
int i,temp;
temp=data[1];
for(i=0;i<n-1;i++){
data[i]=data[i+2];
}
data[i]=temp;
return;
}
#include <stdio.h>
//队遵循 先进先出FIFO原则 first in first out
int main(){
int q[100]={6,3,1,7,5,8,9,2,4}; //假设已经存好某队
// 长度为9 头为0=head,尾为8=tail--;
//头指向开始,尾指向空,tail为9代表空
int head=0,tail=9;
while(head<tail){ //当首尾没有相遇 即 队中还有元素
printf("%d ",q[head]);
head++;
/*先输出首项 头head++ 到第二个位置
把第二项放到队伍最后面,尾tail++
头head++,读到第三个位置,第三个位置成为首项
*/
q[tail]=q[head];
tail++;
head++;
}
system("pause");
return 0;
}
//啊哈算法 第二章 队P29求 小哈的qq号
#include <stdio.h>
#include <string.h>//栈解字符串
/* 栈是 后进先出的原则
栈由 一个数组data2【】 和 栈顶 top组成
相当于一个死胡同,先装进来的最后出去,后装进来的先出去
*/
int main(){
char data1[101],data2[101];//data1 装原来的,data2是判断回文的栈
int i,len,mid,next,top;
gets(data1);
len=strlen(data1);
mid=len/2-1;//读取 字符串 找到中间位置,将栈顶 top初始为0
top=0;//top=0 表明栈为空 top!=0栈不为空
for(i=0;i<=mid;i++){
data2[++top]=data1[i];
}
/*将字符串中点以前装进 栈
例 原字符串1234567 len=7 mid=2 1 2 3三项前一半装进了栈
123456 len=6 mid=2 1 2 3三项前一半装进了栈
由于字符串长度的奇偶性不同,奇: 中点数字不用判断跨过中点
偶:中点为空气,需要判断两侧不用跨过中点
*/
if(len%2==0){
next=mid+1;
}else{
next=mid+2;
}/*逐项比较
若有一项不同跳出来,所以top没有回到top=0,
则不是回文字符串,反之00是
*/
for(i=next;i<=len-1;i++){
if(data1[i]!=data2[top]){
break;
}
top--;
}
if(top==0){
printf("YES");
}else{
printf("NO");
}
system("pause");
return 0;
}
//啊哈算法 第二章 P35 栈 求解回文字符串