第八周项目三 顺序串算法

  1. /* 
  2. Copyright (c)2016,烟台大学计算机与控制工程学院 
  3. All rights reserved. 
  4. 文件名称:项目4.cbp 
  5. 作    者:陈鹏鹏 
  6. 完成日期:2016年10月21日 
  7. 版 本 号:v1.0 
  8.  
  9.  
  10.  
  11. 问题描述:采用顺序存储方式存储串,实现下列算法并测试。 
  12. 输入描述:无 
  13. 程序输出:测试数据 
  14. */  

  15. 代码如下: 

  16. #include <iostream>
    using namespace std; 
    #include <malloc.h>  
    #define MaxSize 100             //最多的字符个数  
    typedef struct  
    {   char data[MaxSize];         //定义可容纳MaxSize个字符的空间  
        int length;                 //标记当前实际串长  
    } SqString; 
    void Trans(SqString &s, char c1, char c2)  
    {  
        int i;  
        char d[100];
    cin>>d;
    for (i=0;d[i]!='\0';i++)  
            s.data[i]=d[i];  
        s.length=i;  
        for (i=0; i<s.length; i++)  
            if (s.data[i]==c1)  
                s.data[i]=c2;  
    }  
    void Invert(SqString &s)
    {
    int i;
    SqString q;
        for (i=0; i<s.length; i++)
    {
    q.data[i] =s.data[s.length-i-1];
    }  
    for (i=0; i<s.length; i++)
    {
    s.data[i]=q.data[i]; 
    }  
               
    }
    void DellChar(SqString &s, char c)  
    {  
        int k=0, i=0;   //k记录值等于c的字符个数  
        while(i<s.length)  
        {  
            if(s.data[i]==c)  
                k++;  
            else  
                s.data[i-k]=s.data[i];  
            i++;  
        }  
        s.length -= k;  

    void DispStr(SqString s)            //输出串  
    {   int i;  
        if (s.length>0)  
        {   for (i=0;i<s.length;i++)  
                printf("%c",s.data[i]);  
            printf("\n");  
        }  
    }  
    void StrAssign(SqString &s,char cstr[]) 字符串常量cstr赋给串s  
    {   int i;  
        for (i=0;cstr[i]!='\0';i++)  
            s.data[i]=cstr[i];  
        s.length=i;  

    SqString CommChar(SqString s1,SqString s2)  
    {  
        SqString s3;  
        int i,j,k=0;  
        for (i=0; i<s1.length; i++)  
        {  
            for (j=0; j<s2.length; j++)  
                if (s2.data[j]==s1.data[i])  
                    break;  
            if (j<s2.length)            //s1.data[i]是公共字符  
            {  
                s3.data[k]=s1.data[i];  
                k++;  
            }  
        }  
        s3.length=k;  
        return s3;  
    }  
    int main()
    {    
        SqString s; 
    Trans(s,'a','c');
        DispStr(s);  
    Invert(s);
    DispStr(s);
    DellChar(s,'d');
    DispStr(s);
    SqString s1, s2, s3;  
        StrAssign(s1, "message");  
        StrAssign(s2, "agent");  
        s3 = CommChar(s1, s2);  
        DispStr(s3); 
    return 0;
    }
  17. 运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值