线性表_双向循环链表(Caesar加密变换结点顺序 代码实现 )
2017-04-27 22:37
375 查看
1.有图有真相
2.代码实现
3.测试结果
2.代码实现
//Caesar Password with DualLinkList #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef char ElemType; //双向循环链表元素类型 typedef int Stutas; typedef struct DualNode { ElemType data; struct DualNode *prior; //前驱结点指针 struct DualNode *next; //后继结点指针 }DualNode, *DualLinkList; //结点元素 | 结点指针 /****************************************************/ /*函数名称:InitList -初始化双向循环链表 */ /*参 数:*L -指向链表的头指针 */ /*函数功能:生成双向循环链表ABCDEFG....Z(Z指向A...) */ /****************************************************/ Stutas InitList(DualLinkList *L) //初始化链表 { DualNode *p, *q; //定义循环使用的临时结点 int i; *L = (DualLinkList)malloc(sizeof(DualNode)); //链表头指针 if (!(L)) return ERROR; (*L)->next = (*L)->prior = NULL; p = (*L); for (i = 0; i < 26; i++) //英文字母26个 { q = (DualNode*)malloc(sizeof(DualNode)); if (!q) return ERROR; q->data = 'A' + i; q->prior = p; q->next = p->next; //此步,q->next=NULL p->next = q; p = q; } p->next = (*L)->next; //最后一个结点的next指向头结点的next,即指向第一个结点 (*L)->next->prior = p; //头结点的next节点(即第一个结点)的前驱结点 指向 尾结点 return OK; } /****************************************************/ /*函数名称:Caesar -凯撒加密方法 */ /*参 数:*L -指向链表的头指针 */ /* i-链表的头指针指向的位置,即作为首节点的标号 */ /*函数功能:移动结点位置,以指定位置结点作为首结点 */ /* 如:i=3时,ABCD...Z变成 DEF...ZABC */ /* 即原来A位置元素变成D,B变成E...Z变成C */ /****************************************************/ void Caesar(DualLinkList *L, int i) { if (i > 0) { do { (*L) = (*L)->next; } while (--i); } if (i < 0) { do { (*L) = (*L)->next; } while (++i); } } int main() { DualLinkList L; //定义双向循环链表L int i, n; InitList(&L); //初始化链表 printf("请输入一个整数:"); scanf("%d", &n); printf("\n"); Caesar(&L, n); //变化顺序加密 for (i = 0; i < 26; i++) //显示结果 { L = L->next; printf("%c", L->data); } return 0; }
3.测试结果
相关文章推荐
- 用模板实现顺序表和带头结点的双向循环链表
- 线性表的链式表示和实现----双向循环链表
- Structure.List 线性表(包含顺序链表,单链表,双链表,双向循环链表的实现)
- 《大话数据结构》读书笔记之线性表抽象数据类型(双向循环链表实现)
- java实现顺序结构线性列表的函数代码
- php线性表顺序存储实现代码(增删查改)
- 数据结构算法代码实现——线性表的顺序表示与实现(二)
- 《数据结构》线性表:顺序存储结构(顺序表的)实现示例代码
- 线性表_循环链表(增减删查 + 约瑟夫环问题 代码实现 )
- 双向循环链表实现26个英文字母的左右移位完整C代码
- 线性表实现:顺序表、链表、循环链表、双向循环链表
- 数据结构学习-线性表-顺序表的代码实现
- 线性表链式存储(双向循环链表)及其14种操作的实现
- 严蔚敏--线性表的顺序表示和实现 代码
- 线性结构的顺序存储和链式存储的实现代码(一)
- 线性表之顺序表 图解和代码实现
- 顺序线性表的代码实现
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 线性表之顺序表 图解和代码实现