数据结构 - 串的基本运算实现
2016-06-01 18:04
197 查看
实验题目:
一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
则字符串“abc”被加密为“ngz”。设计一个程序exp4-4.cpp将输入的文本串进行加密后输出,然后进行解密并输出。
源码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #define MaxSize 200 using namespace std; struct SqString { char data[MaxSize]; int length; }; void StrAssign(SqString &s,char cstr[]) { int i; for (i=0;cstr[i]!='\0';i++) s.data[i]=cstr[i]; s.length=i; } void DispStr(SqString s) { int i; if (s.length>0) { for (i=0;i<s.length;i++) cout<<s.data[i]; cout<<endl; } } char x_0[]="abcdefghijklmnopqrstuvwxyz"; char y_0[]="ngzqtcobmuhelkpdawxfyivrsj"; void en_string(SqString,int); void dec_string(SqString,int); SqString str,x,y; int main() { char input[MaxSize]; cout<<"原文串:"; gets(input); StrAssign(str,input); StrAssign(x,x_0); StrAssign(y,y_0); en_string(str,str.length); return 0; } void en_string(SqString a,int len) { int i,j; SqString encrypt; encrypt.length=len; for(i=0; i<len; i++) for (j=0; j<26; j++) if (a.data[i]==x.data[j]) { encrypt.data[i]=y.data[j]; break; } cout<<"加密串:"; DispStr(encrypt); dec_string(encrypt,len); } void dec_string(SqString a,int len) { int i,j; SqString decipher; decipher.length=len; for(i=0; i<len; i++) for (j=0; j<26; j++) if (a.data[i]==y.data[j]) { decipher.data[i]=x.data[j]; break; } cout<<"解密串:"; DispStr(decipher); }
运行结果:
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)