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

原创 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);
}

运行结果:

运行结果

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

实现顺序串各种基本运算的算法

/*algo4-1.cpp*/ #include #define MaxSize 100/*最多的字符个数*/ typedef struct {  char ch[MaxSize];/*定义...
  • lilanfeng1991
  • lilanfeng1991
  • 2013年01月27日 15:15
  • 866

数据结构 顺序串的各种基本运算

#include #include #include using namespace std; #define MaxSize 100 typedef struct { char data[...
  • a716121
  • a716121
  • 2016年04月01日 10:32
  • 1140

数据结构 - 树和二叉树的基本运算实现

实验题目设计一个程序exp7-6.cpp,构造一棵哈夫曼树,输出对应的哈夫曼编码和平均查找长度。并用表7.8所示的数据进行验证。实验目的掌握哈夫曼树的构造过程和哈夫曼编码的产生方法;灵活运用二叉树这种...
  • mayuko2012
  • mayuko2012
  • 2016年06月21日 23:06
  • 753

数据结构(C实现)------- 串

字符串(简称串),可以将其看作是种特殊的线性表,其特殊性在于线性表的数据元素的类型总是字符性,字符串的数据对象红豆为字符集。     串是由0个或多个字符组成的有限序列。一般记作:s = "s1 s2...
  • jesson20121020
  • jesson20121020
  • 2014年09月23日 00:59
  • 2856

数据结构C语言实现系列[5]——串

 /********************************************************  *                    串的简单模式匹配           ...
  • DL88250
  • DL88250
  • 2007年01月29日 01:22
  • 2057

数据结构实践项目——图的基本运算及遍历操作

本文是针对[数据结构基础系列(7):图]中第1-9课时的实践项目。 0701 图结构导学 0702 图的定义 0703 图的基本术语 0704 图的邻接矩阵存储结构及算法 0705 图的邻接...
  • sxhelijian
  • sxhelijian
  • 2015年11月08日 15:01
  • 3441

数据结构Java实现——③串

所谓串,“字符串”也,即字符串在一起作为一个整体,当然串也是线性表的一种,当然也有顺序存储,链式存储两种。 很显然在学习了前面那么多的“特殊的”线性表之后,对常见的两种存储方式不难理解 首先来说顺序...
  • u011446177
  • u011446177
  • 2015年01月18日 10:30
  • 823

(七)数据结构之搜索二叉树的简单实现

1、搜索二叉树的简单定义 二叉搜索树(BST, Binary Search Tree), 也称二叉排序树或者二叉查找树。 定义: a、是一颗二叉树,可以为空,也可以不为空。 b、非空左子树的所...
  • TECH_PRO
  • TECH_PRO
  • 2017年09月17日 19:00
  • 98

数据结构 - 串的存储表示和实现

串的基本概念字符串:应用在非数值处理、事务处理等领域。 计算机的硬件:主要是反映数值计算的要求。 字符串的处理比具体数值处理复杂。 串(字符串):是零...
  • wangzi11322
  • wangzi11322
  • 2015年04月29日 10:04
  • 1786

数据结构例程——串的模式匹配(KMP算法)

问题:串的模式匹配 KMP算法:#include #include "sqString.h" void GetNext(SqString t,int next[]) /*由模式串t求出next值...
  • sxhelijian
  • sxhelijian
  • 2015年10月07日 15:50
  • 2481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构 - 串的基本运算实现
举报原因:
原因补充:

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