静态串的存储结构以及增删改查

/**

*数据结构串的操作,有增删改查

*串的初始化以及串的赋值等操作必须注意,在新学的时候必须注意值得传递,指针的指向以及初始化的结果

*/

//操作效果图:

代码:

//串的静态存储结构
/**
静态数组存储结构
typedef struct{
char
str[MaxSize];
int length;
}String;
*/

/**
动态的数组存储结构
typedef struct{
char *str; //表示动态数组的名
int
MaxLength;//表示动态数组元素的最大个数
int length ;//表示当前的动态数组的当前长度

}DString;
*/

/**
*定义一个静态数组结构体
*/
#include <iostream>
#define MaxSize
100
using namespace std;

typedef struct {
char
str[MaxSize];
int length;
}String;

/**
*初始化操作
*/
void Initiate(String *s){
s->length =
0;
}
/**
*插入操作
*在S的i的位置下插入字串T
*/

int Insert(String *s,int i,String T){

//cout<<"length1.................."<<T.length<<endl;

if(i <0 ||i> s->length){

cout<<"参数出错哦!"<<endl;
return 0;
}else
if(s->length + T.length >MaxSize){

cout<<"数组空间不足,无法插入!"<<endl;
}else{

/**
*将原串向后移位
*/
for(int j = s->length-1;j
>=i;j--){
s->str[j + T.length] = s->str[j];
}

/**
*插入新的串T
*/
for(int j = 0; j <
T.length;j++){
s->str[i +j] = T.str[j];

}
s->length= s->length+ T.length;//产生新的串长度
//
cout<<"length2..................."<<s->length<<endl;

/* int count = 0;
for(int i = 0;i <s->length
;i++){
cout<<s->str[i];

count++;
}

cout<<"长度"<<count<<endl;

cout<<endl;*/
cout<<"插入成功!"<<endl;

return 1;
}
}

/**
*
*删除串的操作
*删除串s从位置pos到后的长度的子串值
*/

int Delete(String *s,int pos ,int len){

//cout<<"length2.................."<<s->length<<endl;

cout<<"删除过程中....."<<endl;
if(s->length<= 0){

cout<<"数组中无字符串可以删除!"<<endl;
}else if(pos <0 ||
len <0 || pos + len > s->length){

cout<<"参数pos或len 不合法!"<<endl;
}else{

for(int i = pos + len;i < s->length-1;i++){

s->str[i -len] = s->str[i];
}
s->length=
s->length - len;
//
cout<<"length2.................."<<s->length<<endl;

/* int count = 0;
for(int i = 0;i <s->length-1
;i++){
cout<<s->str[i];

count++;
}

cout<<"长度"<<count<<endl;

cout<<endl;*/
return 1;
}
}

/**
*
*取子串操作
*取串从pos开始的len长度的串给T
*/

int SubString(String *s,int pos ,int len,String *T){
if(pos <
0|| pos+ len >s->length|| len <0){

cout<<"参数pos或len有错误!"<<endl;
return 0;

}else{
for(int i = 0 ;i <len;i++){

T->str[i] = s->str[pos +i];
}

T->length = len ;
return 1;
}

}

int main(){
/**
*初始化串
*/

int count = 0;
String
*p;
Initiate(p);
char str1[100] = "Hello world!";
int length1
= strlen(str1);

//cout<<"length1<<<<<<<<<<<<<<<<<<<<<<<"<<length1<<endl;

char str2[20] = "I Love You!";
int length2 = strlen(str2);

//cout<<"length2<<<<<<<<<<<<<<<<<<<<<<<"<<length2<<endl;

String myString1 = {"I Love You",length1},myString2 = {"All
world!",length2};
cout<<"初始化的长度"<<p->length<<endl;

cout<<"插入操作,将str1插入str2中,从0位置开始:"<<endl;

Insert(&myString2,0,myString1);

cout<<"长度:"<<myString1.length<<"\t"<<myString2.length<<endl;

for(int i = 0;i <myString2.length;i++){

cout<<myString2.str[i];
count++;
}

cout<<endl;

cout<<"长度:"<<count<<"\t"<<myString2.length<<endl;

cout<<endl;

cout<<"删除:"<<endl;

Delete(&myString2,16 ,2);
count = 0;

cout<<"删除后的字符串:"<<endl;
for(int i = 0;i
<myString2.length-1;i++){
cout<<myString2.str[i];

count++;
}
cout<<endl;

cout<<"删除后长度:"<<count<<"\t"<<myString2.length<<endl;

cout<<endl;
cout<<"取字符串:"<<endl;
count =
0;
String *p1;
p1 = (String *)malloc(sizeof(String));

SubString(&myString2,5 ,14,p1);

cout<<"未被获取的字符串是:"<<endl;
for(int i = 0;i <
myString2.length - p1->length-1;i++){

cout<<myString2.str[i];
}
cout<<endl;

cout<<"获取的字符串是:"<<endl;
for(int i = 0;i <10;i++){

cout<<p1->str[i];
count++;
}

cout<<endl;
cout<<"满字符串是:"<<endl;
for(int i =
0;i < myString2.length-1 ;i++){
cout<<myString2.str[i];

}
cout<<endl;

cout<<"所取字符串长度:"<<count<<"主串的长度:"<<myString2.length<<endl;

return 0;
}

静态串的存储结构以及增删改查

时间: 2024-10-12 11:33:47

静态串的存储结构以及增删改查的相关文章

Mysql学习笔记(二)对表结构的增删改查

有将近一个星期都没有更新mysql了.相反linux的东西倒是学习不少.可能我个人情感上对linux更感兴趣一点.但mysql我也不烦,只是一旦将精力投入到了一样事情上去,就很难将精力分散去搞其他的东西. 最近我也调整了学习计划和健身计划.以前是每天晚上下班后,运动半个小时到一个小时,现在是晚上早睡,基本上如果没有特别的安排,10:30是肯定要入睡的.从下班到家,然后抽出二到三个小时学习一下.至于健身,要放在了早上,昨天试验了一下,早上还是起的来的.5:30起床,跑步半个小时,甚至还有时间去早市

MYSQL学习笔记 (二)对数据库结构的增删改查

显示数据库 show databases; 选择数据库 use database;//其实database为数据库的名字 创建表 create table tbclass( id int not null auto_increment primary key, className varchar(20) not null unique, studentNum smallint not null )engine=myisam default charset=utf8 插入数据 insert int

Mysql学习笔记(三)对表数据的增删改查。

写在前面:(一些牢骚,可以直接跳到分割线后) 太过敏感的人不会快乐,不幸的是我正是这种性格的人. 从培训机构毕业后,迫于经济方面的压力,和当时的班里的一个同学住在了一起,我们在一个公司上班.谁知道这都是不开心生活的源头,从每天早晨开始心情就很糟糕.他是个脾气很慢的人,我是个急脾气,特别是在早上上班的时候.由此种种吧,实在是不胜枚举.算了,还是不说了,太痛苦了,我不太喜欢说别人的坏话.我是学心理学的,已经用各种方法去安慰自己,但是都不太奏效. 回想以往和朋友的交往中,我虽然不算十分合群的人,但绝对

Mysql入门-对表数据的增删改查

这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候,我就知道,程序员的成长路程上的一个瓶颈就在于数据库.如何书写高维护性的sql语句,如何能保持高维护性的同时又保持执行的高效率,这是个难题.我最近在做一个比较棘手的项目,常常left join 5~6张表,扫表10几万,查询速度慢的惊人.10几万还仅仅是测试数据,等真正的项目上线,数据量可能会达到百万

MySQL数据库之表的增删改查

目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是硬盘上的一个文件夹,表table就是文件夹里面的一个文件 2.表中的一条记录就相当于文件中的一行内容,与excel表类似,表table中有不同的标题,称之为字段 3.本节对表结构做增删改查,即创建表.删除表.修改表.查看表结构,至于表中数据的增删改查日后单独总结 2 创建表 1.创建一张表,需要建一

数据结构 线性结构(数组[列表] ,链表 单链表的增删改查**, 线性结构的应用 队列 栈[函数的调用**]),非线性结构 树

数据结构 参考:http://lupython.gitee.io/ 线性结构 就是能够用一根线串起来的数据结构 数组 (列表) 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件? 答:内存必须有一块连续的内存空间 int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型. int a[7] = array(1,2,3,4,5,6,7) 问:如何申请内存? 答:C,C++语言,申请:mallco (28).释放:free(28) 问:int

python开发mysql:mysql安装(windows)&amp;密码找回&amp;存储引擎简介&amp;库表的增删改查

一,mysql安装 1 下载地址 https://dev.mysql.com/downloads/file/?id=471342 2 解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计算机环境变量中 3 4 用CMD命令行执行,mysqld --initialize-insecure 初始化数据库,这样C:\mysql-5.7.19-winx64 5 这个目录下就会产生data的目录,里面包含的就是初始化的东西,配置文件,用户密码信息 6 -insecure 这个参数就是

IOS之分析网易新闻存储数据(CoreData的使用,增删改查)

用过网易新闻客户端的朋友们都知道,获取新闻列表时有的时候他会请求网络有时候不会,查看某条新闻的时候再返回会标注已经查看的效果,接下来分析一下是如何实现的. 首先: 1.网易新闻用CoreData存储了新闻列表,因为我打开网易新闻的Documents时看到了三个文件: newsapp.sqlite,newsapp.sqlite-shm,newsapp.sqlite-wal:这三个文件是你在用CoreData时自动生成的.所以我确定他是用coredata存储的数据而不是sqlite数据库.(Core

mysql笔记--数据库基本增删改查 修改表结构

数据库基本增删改查 1. 增-添加/插入数据,insert into 插入哪张表,那些列,什么值, 语句:insert into 表名(列1,列2,列3)values (值1,值2,值3): 可以不按原列的顺序插入,也可以插入部分列,但是值与列要一一对应,不能混乱!!! 一次插入多行数据 : Insert into 表名(列1,列2)values (值1,值2),(值1,值2): 2. 改-更新数据update 更新哪张表,哪些列,哪些值 语句:update 表名 set 列1=值1,列2=值2