zoukankan      html  css  js  c++  java
  • 数据结构实训报告

    预习要点:

    ① 串赋值Assign(s,t):将一个值赋给串s。
    ② 销毁串DestroyStr(s):释放串s占用的内存空间。
    ③ 串复制StrCopy(s,t):将一个串t赋给串s。
    ④ 求串长StrLength(s):返回串s的长度。
    ⑤ 判断串相等StrEqual(s,t):两个串s和t相等时返回1;否则返回0。
    ⑥ 串连接Concat(s,t):返回串s和串t连接的结果。
    ⑦ 求子串SubStr (s,i,j):返回串s的第i个位置开始的j个字符组成的串。
    ⑧ 查找定位位置Index(s,t):返回子串t在主串s中的位置。
    ⑨ 子串插入InsStr(s,i,t):将子串t插入到串s的第i个位置。
    ⑩ 子串删除DelStr(s,i,j):删除串s中从第i个位置开始的j个字符。
    ⑪ 子串替换RepStrAll(s,s1,s2):将串s中所有出现的子串s1均替换成s2。
    ⑫ 输出串DispStr(s):显示串s的所有字符。
    实验(训)仪器、软件、设备和器材:
    ① 计算机DELL
    ② Dev-C++
    实验(训)内容 :
    ①定义顺序串A,结构体内包含两个成员,存储数据的数组和字符串的长度。
    ②给这个顺序串赋值。
    ③再定义令外一个顺序串B,将A串的内容复制到B串。
    ④ 求A串与B串的长度。
    ⑤ 判断A串与B串是否相等,
    如果A串>B串,返回1;
    如果A串<B串,返回1;
    如果A串=B串,返回0.
    ⑥ 将B串接在A串后面,返回C串。。
    ⑦ 求A串中的子串SubStr (A,i,j):返回串A的第i个位置开始的j个字符组成的串。
    ⑧ 模式匹配------查找定位位置Index(A,t):
    返回子串t在主串A中的位置。
    ⑨ 输出串DispStr(A):显示串A的所有字符。
    //
    //  main.cpp
    //  字符串上机
    //
    //  Created by 孙贤超 on 2019/5/18.
    //  Copyright © 2019 孙贤超. All rights reserved.
    //
    #include<stdio.h>
    #define maxsize 100
    typedef struct{
        char ch[maxsize];
        int n;
    }SeqString;
    
    void Assign(SeqString &L,char ch1[]);
    void DisqStr(SeqString &L);
    int  concat(SeqString &L,char ch2[]);
    void Strlength(SeqString &L);
    void StrEqual(SeqString &L,char ch2[],int i);
    void Index (SeqString &L,char ch3[]);
    void InsStr(SeqString &L,int n,int m);
    
    int main(){
        int i,m,n;
        char ch1[100],ch2[5]="efgh",ch3[4]="efg";
        SeqString L;
        printf("请输入一个字符串:
    ");
        gets(ch1);
        Assign(L,ch1);
        DisqStr(L);
        Strlength(L);
        StrEqual(L,ch2,i);
        i=concat(L,ch2);
        printf("请问要查找第几个位置开始的几个字符:
    ");
        scanf("%d %d",&n,&m);
        InsStr(L,n,m);
        Index(L,ch3);
        DisqStr(L);
    }
    
    void Assign(SeqString &L,char ch1[]){           //  数组赋值给字符串
        int i=0;
        while(ch1[i]!=''){
            L.ch[i]=ch1[i];
            i++;
        }
        L.n=i;
    }
    
    void DisqStr(SeqString &L){                     //  输出串
        printf("L.ch的字符串为:");
        for(int i=0;i<L.n;i++){
            printf("%c",L.ch[i]);
        }
        printf("
    ");
    }
    
    int  concat(SeqString &L,char ch2[]){            //串连接
        int i=0,j,m;
        m=L.n;
        while(ch2[i]!=''){
            i++;
            m++;
        }
        for(j=0;j<i;j++){
            L.ch[j+L.n]=ch2[j];
        }
        printf("将串ch2连接到L.ch后面,得到的新的字符串为:
    %s
    ",L.ch);
        L.n=m;
        return i;
    }
    
    void Strlength(SeqString &L){                    //求串长
        printf("字符串L.ch的长度为:%d
    ",L.n);
    }
    
    void StrEqual(SeqString &L,char ch2[],int i){          //判断串相等
        int k=0,a;
        a=L.n>=i?L.n:i;
        printf("判断L.ch和ch2的字符串是否相等!
    结果为:");
        for(int j=0;j<a;j++){
            if(L.ch[j]==ch2[j]){
                k++;
            }else if(L.ch[j]>ch2[j]){
                printf("1
    ");
                break;
            }else {
                printf("-1
    ");
                break;
            }
        }
        if(k==a){
            printf("0
    ");
        }
    }
    
    void Index (SeqString &L,char ch3[]){
        int n=0,i,j,k;
        while(ch3[n]!=''){
            n++ ;
        }
        for(i=0;i<L.n-n;i++){
            for(j=0,k=i;j<n;j++,k++){
                if(ch3[j]!=L.ch[k]){
                    break;
                } }
            if(j==n){
                printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置
    ",i+1,i+n);
            }
        }
        return;
    }
    
    void InsStr(SeqString &L,int n,int m){           //串的查找
        int i;
        printf("L.ch字符串第%d个位置开始的%d个字符为:
    ",n,m);
        for(i=n-1;i<n+m-1;i++){
            printf("%c",L.ch[i]);
        }
        printf("
    ");
    }
  • 相关阅读:
    springboot 连接 mysql 问题
    fehelper浏览器插件
    eslint
    小游戏
    vba获取word文档中的标题
    mybatis resultMap 复用
    图片上传
    Linux设备树中节点的命名格式和常见属性【转】
    SCP指令远程传输数据
    C#调用 inpout32.dll 操作 CPU 的并口
  • 原文地址:https://www.cnblogs.com/sxcxfl/p/10886131.html
Copyright © 2011-2022 走看看