2019独角兽企业重金招聘Python工程师标准>>>
一、双向循环链表实践
1.题目1,要求实现用户输入一个数,使得26个字母的排列发生变化
例如用户输入3,输出结果:DEFGHIJKLMNOPQRSTUVWXYZABC
例如用户输入-3,输出结果:XYZABCDEFGHIJKLMNOPQRSTUVW
代码实现:
#include
#include
#include OK 1
#include ERROR 0
typedef char ElemType;
typedef int Status;
typedef struct DualNode{
ElemType data;
struct DualNode *prior;
struct DualNode *next;
}DualNode, DualLinkList;
// 初始化双循环链表
Status InitList(DualLinkList *L){
DualNode *p, *q;
int i;
*L = (DualNode)malloc(sizeof(DualNode));
if(!(*L)){ // 创建L分配空间失败
return ERROR;
}
(*L)->next = (*L)->prior = NULL;
p = (*L);
for(i=0; i<26; i++){
q = (DualNode *)malloc(sizeof(DualNode));
if(!q){
return ERROR;
}
q->data = 'A' + i;
q->prior = p;
q->next = p->next
p->next = q;
p = q;
}
p->next = (*L);
(*L)->next->prior = p;
return OK;
}
void Caesar(DuLinkList *L, int i){
if(i>0){
do{
(*L) = (*L)->next;
}while(--i);
}
if(i<0){
do{
(*L) = (*L)->next;
}while(++i);
}
}
int main(){
DuLinkList L;
int i;
InitList(&L);
printf("请输入一个整数:");
scanf("%d", &n);
printf("\n");
Caesar(%L, n);
for(i=0; i<26; i++){
L = L->next;
printf("%c", L->data);
}
printf("\n")
return 0;
}
2.Vigenere(维吉尼亚)加密
当输入明文,自动生成随机密匙匹配明文中每个字母并移位加密。
注意:当然你的随机密匙生成后不能丢掉,丢掉了就很难把明文还原了,建议把随机密匙和密文加密存储起来。
本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!