首页 > 其他分享 >数据结构实验(串的实现)

数据结构实验(串的实现)

时间:2024-11-08 23:18:07浏览次数:3  
标签:实现 char while 实验 result printf 字符串 数据结构 输入

实验串的实现

一、实验目的

1.掌握串的基本概念;

2.理解串的几种存储表示及其特点;

3.掌握串的常用操作的实现。

二、实验环境

硬件:计算机一台;

软件: Visual Studio。

三、实验内容

串分别采用顺序存储方式的前提下,完成如下两个任务:

1.串比较操作:编写一个比较串s和串t两个串是否相等的函数。

2.串拼接操作:将串t连接到串s后形成一个新串。

3.主程序中要求设计一个菜单,允许用户通过菜单选择执行哪一种串操作。注:串的值可以从键盘任意输

四、实验原理

串是由零个或多个字符组成的有限序列。它通常表示为: S = a_1a_2...a_n 其中,S 是串的名称,a_i 是串中的字符,n 是串的长度(n \geq 0)

主要实现方式是顺序存储和链式存储。

五、实验过程记录

1、头文件

//头文件
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LENGTH 100

2、串比较操作:编写一个比较串s和串t两个串是否相等的函数。

// 比较两个字符串是否相等
int compareStrings(char* s, char* t) {
    return strcmp(s, t) == 0;
}

3、串拼接操作:将串t连接到串s后形成一个新串。 

// 拼接两个字符串,使用动态内存分配
char* concatenateStrings(char* s, char* t) {
    char* result = malloc(strlen(s) + strlen(t) + 1); // 分配足够的内存
    if (result == NULL) {
        printf("内存分配失败。\n");
        exit(1);
    }
    strcpy(result, s); // 复制s到result
    strcat(result, t); // 将t拼接到result的末尾
    return result;
}

4、主程序中要求设计一个菜单,允许用户通过菜单选择执行哪一种串操作。注:串的值可以从键盘任意输入一个字符串获得。

// 主程序
int main() {
    char* s, * t;
    int choice;

    s = (char*)malloc(MAX_LENGTH * sizeof(char));
    t = (char*)malloc(MAX_LENGTH * sizeof(char));

    if (s == NULL || t == NULL) {
        printf("内存分配失败。\n");
        return 1;
    }

    while (1) {
        printf("\n**************************");
        printf("\n*    字符串操作菜单      * ");
        printf("\n**************************\n");
        printf("*    1.比较两个字符串    *\n");
        printf("*    2.拼接两个字符串    *\n");
        printf("*    3. 退出             *\n");
        printf("**************************\n");
        printf("请选择操作(1-3):");
        if (scanf("%d", &choice) != 1 || choice < 1 || choice > 3) {
            printf("输入无效,请输入1-3之间的数字。\n");
            while (getchar() != '\n'); // 清空输入缓冲区
            continue;
        }

        switch (choice) {
        case 1:
            printf("请输入第一个字符串:");
            if (scanf("%99s", s) != 1) {
                printf("输入无效,请输入一个字符串。\n");
                while (getchar() != '\n'); // 清空输入缓冲区
                continue;
            }
            printf("请输入第二个字符串:");
            if (scanf("%99s", t) != 1) {
                printf("输入无效,请输入一个字符串。\n");
                while (getchar() != '\n'); // 清空输入缓冲区
                continue;
            }
            if (compareStrings(s, t)) {
                printf("两个字符串相等。\n");
            }
            else {
                printf("两个字符串不相等。\n");
            }
            break;
        case 2:
            printf("请输入第一个字符串:");
            if (scanf("%99s", s) != 1) {
                printf("输入无效,请输入一个字符串。\n");
                while (getchar() != '\n'); // 清空输入缓冲区
                continue;
            }
            printf("请输入第二个字符串:");
            if (scanf("%99s", t) != 1) {
                printf("输入无效,请输入一个字符串。\n");
                while (getchar() != '\n'); // 清空输入缓冲区
                continue;
            }
            printf("拼接后的字符串为:%s\n", concatenateStrings(s, t));
            break;
        case 3:
            free(s); // 释放内存
            free(t); // 释放内存
            return 0;
        default:
            printf("无效选择,请重新输入。\n");
        }
    }

    return 0;
}

六、代码最终实现窗口

七、实验总结

通过这次实验,我深刻理解了串这一数据结构的重要性。我学会了如何设计和实现基本的串操作,并认识到了不同存储方式对操作效率的影响。此外,我也意识到了算法优化在提高程序性能中的关键作用。串作为计算机科学中的基础数据结构,其操作和应用非常广泛。通过本次实验,我不仅掌握了串的基本操作,还提高了自己的编程能力和问题解决能力。我期待在未来的学习中能够继续深入探索数据结构和算法。

标签:实现,char,while,实验,result,printf,字符串,数据结构,输入
From: https://blog.csdn.net/weixin_56313201/article/details/143636352

相关文章

  • 用html实现软文推广页面
    一、下载所需的基础文件二、解压文件并用vsc软件打开注:打开文件夹前最好把名字改成英文三、创建项目双击空白处创建一个以.html的文件,然后输入!再按Tab键四、结构分析1.标题分别使用<h1>和<h2>标签,其中h1表示一级标题,h2表示二级标题2.<h1>标签中应用了名称为“书法.t......
  • 《计算机视觉技术》实验报告——6.生成并去除图像噪声
    首次完成时间:2024年 10月22日去除图像噪声一.实验内容1.根据均匀噪声的原理,设计添加均匀噪声。1)程序代码:importcv2importrandomasrdimportnumpyasnpdefavg_noise(src,noise_num):    img_noise=src.copy()    rows,cols,chn=img_nois......
  • Java面试之Java中实现多线程有几种方法
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java中实现多线程有几种方法?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的java面试题整理***Java中实现多线程有几种方法创建线程的常用三种方式:继承Thread类实现Runnable接口实现Cal......
  • huawei初级网络工程师综合实验
    本章为总结练习,只提供思路以及验证结果,和比较有难度的命令并且在我的其他章节对本练习中出现的所有都有介绍这里就不重复解释了拓扑图以及实验要求:sw1充当2层交换机sw-2(undoportswitch)充当三册交换机R-3连接外网1.基本ip配置略2.sw-2和R-2间开启rip协议R-2R-3......
  • 鸿蒙开发进阶(HarmonyOS)录像实现方案(ArkTS)
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)当前示......
  • BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络
    BO-CNN-LSTM回归预测|MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测目录BO-CNN-LSTM回归预测|MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料......
  • flask基于SpringBoot的婚庆策划系统的设计与实现(毕设源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着社会经济的发展和人们生活水平的提高,婚庆行业日益繁荣。关于婚庆策划的研究,现有研究主要以婚庆服务的具体项目如会场布置、婚礼流......
  • clean-java-project-structure-实现秒杀系统
    clean-java-project-structure-意在clean&standard断WAN手撕了一个平平无奇的秒杀系统,crud过载,赶紧多看看源码缓缓秒杀系统实现-前言在互联网高速发展的时代,电商平台的各种促销活动层出不穷,其中“秒杀”活动以其低价、限时、限量的特点吸引了大量用户,成为电商平台吸......
  • Unity 2D平台跳跃游戏中冲刺和蓄力冲刺实现(新的输入系统)
    使用新的输入系统去进行冲刺和蓄力冲刺的制作,我们要解决几个问题:1.如何实现冲刺效果。2.如何判断玩家是长按按键还是短按。3.冲刺过程中如果撞到墙,应该怎么办?4.冲刺时的镜头抖动应该怎么做?我们一个一个来解决。至于多向冲刺我个人认为可以单独开一篇来讲,主要介绍键盘和手......
  • 基于Java+SpringBoot心理测评心理测试系统功能实现八
    一、前言介绍:1.1项目摘要心理测评和心理测试系统在当代社会中扮演着越来越重要的角色。随着心理健康问题日益受到重视,心理测评和心理测试系统作为评估个体心理状态、诊断心理问题、制定心理治疗方案的工具,其需求和应用范围不断扩大。首先,现代社会节奏快速,竞争激烈,人们面临着来......