博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法之双向循环链表实践
阅读量:7094 次
发布时间:2019-06-28

本文共 1512 字,大约阅读时间需要 5 分钟。

hot3.png

一、双向循环链表实践

      1.题目1,要求实现用户输入一个数,使得26个字母的排列发生变化

         例如用户输入3,输出结果:DEFGHIJKLMNOPQRSTUVWXYZABC

         例如用户输入-3,输出结果:XYZABCDEFGHIJKLMNOPQRSTUVW

      代码实现:

#include 
#include
#include OK 1#include ERROR 0typedef 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(维吉尼亚)加密

      当输入明文,自动生成随机密匙匹配明文中每个字母并移位加密。

     

      注意:当然你的随机密匙生成后不能丢掉,丢掉了就很难把明文还原了,建议把随机密匙和密文加密存储起来。

 

本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!

 

转载于:https://my.oschina.net/aibinxiao/blog/1835202

你可能感兴趣的文章
微信小程序异步API为Promise简化异步编程
查看>>
关于java泛型大大小小的那些事
查看>>
Spring AOP不拦截从对象内部调用的方法原因
查看>>
Feign 与 Hystrix
查看>>
新旧之争,JDK 团队发起 Project Skara 引争议
查看>>
sudo、磁盘配额、数组、信号捕捉
查看>>
Azure负载均衡机制与会话粘滞需求
查看>>
Linux命令详解
查看>>
Quartz Job Scheduling Framework Reading Note(四)
查看>>
QTP的那些事--有关一个webtable数据的获取案例
查看>>
【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成
查看>>
EXTJS学习系列提高篇:第十一篇(转载)作者殷良胜,制作树形菜单之五
查看>>
ylbtech-memorandum(备忘录)-数据库设计
查看>>
Oracle数据库服务器CPU持续100%之等待事件asynch descriptor resize
查看>>
java8中的localdate和localtime用法举例
查看>>
8天学通MongoDB——第四天 索引操作
查看>>
linux命令
查看>>
程序员之路
查看>>
MISP2:初始阶段
查看>>
详解:Redis主从技术的应用
查看>>