实验串的实现
一、实验目的
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