【数据结构】顺序串的插入算法,删除算法,连接运算,顺序串求子串算法
主函数自行添加
头文件 + 宏定义
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
串的顺序存储
typedef struct
{char str[MAXSIZE];int length;
}seqstring;
顺序串的创建
void creat(seqstring *S)
{char c;int i=0;while((c=getchar())!='\n'){S->str[i++]=c;}S->str[i]='\0';S->length=i;return ;
}
(1)插入运算
将字符串T插入到字符串S的第i个字符开始的位置上
void strinsert(seqstring *S,int i,seqstring T)
{int k;if(i<1 || i>S->length+1 || S->length + T.length>=MAXSIZE){printf("can not insert\n");return ;}for(k=S->length-1;k>=i-1;k--){S->str[k+T.length]=S->str[k];}for(k=0;k<T.length;k++){S->str[k+i-1]=T.str[k];}S->length+=T.length;S->str[S->length]='\0';
}
(2)删除运算
将串S中从第i个字符起长度为len的字串删除
void strdelete(seqstring *S,int i,int len)
{int k;if(i<0 || i>S->length || i+len-1>MAXSIZE){printf("can not delete\n");return ;}for(k=i-1;k<=S->length-1;k++){S->str[k]=S->str[k+len];}S->length-=len;S->str[k]='\0';return ;
}
(3)顺序串的连接
将串S1和串S2连接
seqstring *strconcat(seqstring S,seqstring T)
{int i;seqstring *r;if(S.length+T.length>=MAXSIZE){printf("can not concate\n");return NULL;}r=(seqstring*)malloc(sizeof(seqstring));for(i=0;i<S.length;i++){r->str[i]=S.str[i];}for(i=0;i<T.length;i++){r->str[S.length+i]=T.str[i];}r->length=S.length+T.length;r->str[r->length]='\0';return r;
}
(4)求子串运算
从串第i个字符开始取长度为len的子串返回
seqstring *substring(seqstring S,int i,int len)
{int k;seqstring *r;if(i<1 || i>S.length || i+len-1>S.length){printf("substring error\n");exit(1);}else{r=(seqstring*)malloc(sizeof(seqstring));for(k=0;k<len;k++){r->str[k]=S.str[i-1+k];}r->length=len;r->str[r->length]='\0';}return r;
}
【数据结构】顺序串的插入算法,删除算法,连接运算,顺序串求子串算法相关推荐
- 本科课程【数据结构与算法】实验1——线性表的顺序表示及插入、删除操作(C++实现)
大家好,我是[1+1=王], 热爱java的计算机(人工智能)渣硕研究生在读. 如果你也对java.人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never ...
- 顺序表的插入与删除java_C++实现顺序表的常用操作(插入删出查找输出)
实现顺序表的插入,删除,查找,输出操作在C语言中经常用到.下面小编给大家整理实现代码,一起看下吧 代码如下所示: #include using namespace std; #define MAXSI ...
- 栈的删除函数c语言,顺序栈的插入和删除
<顺序栈的插入和删除>由会员分享,可在线阅读,更多相关<顺序栈的插入和删除(5页珍藏版)>请在人人文库网上搜索. 1.实验四顺序栈的插入和删除姓名:学号: 日期:一.实验目的: ...
- 2 顺序表的插入,删除,查找操作(详细)
一 顺序表的结构体定义和函数声明 #include<iostream> using namespace std; #define ElemType int // 自定义 #define ...
- c语言编程文件中删除数据结构,C语言数据结构实战(一)顺序表的插入与删除
今天学习了思成老师的数据结构实战教程 写了一个顺序表 插入和删除的操作 把源码共享给大家 一共包括list.c stu.h main.c list.h .h文件是头文件 需要引入 具体的功能我都已 ...
- 【数据结构】—顺序表的插入、删除、查找操作
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define InitSize 10 //默 ...
- 【数据结构】平衡二叉树的插入、删除
目录 定义:什么叫平衡二叉树 定义及原理 不平衡的四种情况 旋转操作 插入节点 删除节点 定义:什么叫平衡二叉树 是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树.1962年,G.M. Ade ...
- 顺序表的插入和删除操作
C语言线性表的插入和删除操作 C语言数据结构的学习之线性表的插入与删除操作 C语言线性表的插入和删除操作 一.插入操作 插入操作的时间复杂度分析: 二.删除操作 删除操作的时间复杂度分析: 查找操作 ...
- 数据结构—线性表顺序存储插入和删除操作
线性表的操作:1.InitList(*L):初始化操作,建立一个空的线性表L 2.ListEmpty(L):判断线性表是否为空,如果为空,返回true,否则返回false 3.ClearList(*L ...
最新文章
- 从搞笑到高效,构建敏捷团队的基础原则
- mysql去掉两个最高分_从MySQL中的单列获取最高得分值,从两列获取最高得分值...
- 每日一皮:千万别和杠精一般见识...
- AntD02 Table组件的使用
- Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)
- 二维数组求最大子矩阵的和
- 【原】PSD图标素材的全自动切图方法,适用于IOS、安卓、web前端等领域
- 赛锐信息:PM模块的几点看法
- js高级学习笔记(b站尚硅谷)-2-数据、变量、内存三者的关系
- 计算机桌面计划,如何用便签在电脑桌面安排日程?
- 架构系列---QR二维码和扫描二维码登陆原理
- linux svc作用,[svc]linux性能监控
- NAIC2021-AI+视觉特征编码第一阶段开源方案
- 今天过节,摔杯,逼宫,吃瓜吧?
- (补基础)数据分析系列:假设检验的基础知识
- 转载为什么USART的RX和TX和SPI的MISO、MOSI都被配置成推挽输出,他们还能正常工作
- MATLAB中图像的读取与显示及灰度
- 基于java面对对象编程范式笔记
- python读取txt每一行按照正则匹配hon-正则表达式使用python从文件中过滤和删除特定的多行文本...
- 卡尔曼滤波(附python代码)
热门文章
- shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?
- 零基础学Java需要做哪些准备
- 计算机网络分为两大阶段,【多选题】计算机网络的发展分为哪些阶段?()
A. 远程终端联机阶段 B. 计算机网络阶段 C. 计算机网络互联阶段 D. 信息高速公路阶段...
- mysql 5.7 mts_MySQL:MTS和mysqldump死锁
- 使用Vue+Spring Boot实现Excel上传
- Kylin集群部署和cube使用
- linux系统命令学习系列-文件和目录管理
- 了解和入门注解的应用
- SilverLight 4页面跳转大全
- pl/sql中三种游标循环效率对比