数据结构 - 串的基本运算实现

原创 2016年06月01日 18:04:16

实验题目:

一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:
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);
}

运行结果:

运行结果

版权声明:本文为博主原创文章,未经博主允许不得转载,复制。

相关文章推荐

数据结构 - 数组和广义表的基本运算实现

实验题目:假设n n的稀疏矩阵A采用三元组表示,设计一个程序exp6-4.cpp实现如下功能: (1)生成如下两个稀疏矩阵的三元组a和b; (2)输出a转置矩阵的三元组; ...

数据结构 - 栈和队列的基本运算实现

实验目的:编写一个程序exp3-6.cpp,求解皇后问题:在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。 要求:(1)皇后的个数n由用户输入,其值不能超过20,输出...

南邮数据结构实验三---图的基本运算及飞机换乘次数最少问题

一、 实验目的和要求 1.掌握在图的邻接矩阵和邻接表存储结构实现图的基本运算的算法。学习使用图算法解决应用问题的方法。 (1). 验证教材中关于在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算...

数据结构(基本运算验证性实践路线)——顺序表

目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList。 在研习DispList中发现,要输出线性表,还要判断表是否为空,这样,实现判断线...

数据结构-顺序存储-线性表-基本运算

//定义原理 const int Maxsize=100; typdef struct { DataType data[Maxsize]; int length; }SeqList; SeqLis...

R语言学习笔记(一)——数据结构与基本运算

一·数据类型 R语言中主要数据类型有: 数值型(numeric),实数。实际上是整数型与双精度,默认是双精度。 字符型(character),“”或‘’之间的字符串。 逻辑型(logical),...

数据结构例程——对称矩阵的压缩存储及基本运算

本文针对数据结构基础系列网络课程(5):数组与广义表中第2课时特殊矩阵的压缩存储。问题:用压缩形式存储对称矩阵,实现下面的操作并测试 void Init(int *&b);//为N阶对称矩阵初始化存储...

数据结构-链式存储-基本运算

//数据结构中线性表的链式存储 //1.单链表 //定义,使用Node定义节点,使用Linklist定义指向节点的指针 typedef struct node { DataType data; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)