データ構造復習:線形表を復習する.スタック&キュー
データ構造を再学習する線形表:1.砂彫り解読2.判断回文*************************************************************************************************************************************************************************************************************************************************************************************************************************************行列沙雕解密:今、ある女子学生が暗号化された数列をくれました.そして、各数を1番、2番、3番と見なしています.数列は私に復号する必要があるので、復号するには以下の規則に従う必要があります:1号数を削除して、2号数を末尾に置きます;3番目の番号を削除し、4番目の番号を末尾に配置します.これによって行います.すべての数が操作されるまで、最後の数列は復号された数列です.暗号化数は、35122029342210として知られています.現在、コードの復号化と暗号化が要求されており、後でその学生と感情をよく交流することができます.ここの教科書の中の方式はキューで解読を実現します:(キューを使わないと特に簡単で、ここは復習のために書くのが多いだけです)
(2)暗号化:(c,キューなし)
********2.仓库復号メッセージ:(c)
単純な点のために,スタック入力文字列を構造体方式で定義せず,返信であるか否かを判断する.
#include
#include
using namespace std;
struct queue{
char data[1000];
int bottom;
int top;
}secret;
void init()
{
cout << " , :" << endl;
cin >> secret.data;
secret.bottom=0;
secret.top=strlen(secret.data)-1;
}
void print()
{
cout << " !" << endl << " :" << endl;
while(secret.bottom <= secret.top)
{
cout << secret.data[secret.bottom] ;
secret.bottom++;
}
}
void decipher(int k)
{
while(secret.bottom <= k)
{
secret.bottom += 1;
secret.top += 1;
secret.data[secret.top] = secret.data[secret.bottom];
secret.bottom += 1;
}
}
int main()
{
int i,k;
init();
k=secret.top;
decipher(k);
print();
return 0;
}
(2)暗号化:(c,キューなし)
#include
#include
#include
#include
void encript(char str[],int len)
{
char c[1000];
int i=0,j;
char a;
for(j=0;j < len;j++)
{
a= 48 + rand()%10;
c[i++]=a;
c[i++]=str[j];
}
for(j=i-1;j > 0;j-=2)
{
printf("%c%c",c[j-1],c[j]);
}
printf("
");
}
int main()
{
char str[1000];
int len;
char a;
printf(" , :
");
scanf("%s",str);
len = strlen(str);
system("cls");
printf(" , :
");
for(int i=0;i < len;i++)
printf("*");
printf("
");
printf(" :
");
for(int j=0;j < len;j++)
{
a= 48 + rand()%10;
printf("%c",a);
printf("%c",str[j]);
}
return 0;
}
********2.仓库復号メッセージ:(c)
単純な点のために,スタック入力文字列を構造体方式で定義せず,返信であるか否かを判断する.
#include
#include
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++)
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");
getchar();
getchar();
return 0;
}