主函数自行添加

头文件 + 宏定义

#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. 本科课程【数据结构与算法】实验1——线性表的顺序表示及插入、删除操作(C++实现)

    大家好,我是[1+1=王], 热爱java的计算机(人工智能)渣硕研究生在读. 如果你也对java.人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never ...

  2. 顺序表的插入与删除java_C++实现顺序表的常用操作(插入删出查找输出)

    实现顺序表的插入,删除,查找,输出操作在C语言中经常用到.下面小编给大家整理实现代码,一起看下吧 代码如下所示: #include using namespace std; #define MAXSI ...

  3. 栈的删除函数c语言,顺序栈的插入和删除

    <顺序栈的插入和删除>由会员分享,可在线阅读,更多相关<顺序栈的插入和删除(5页珍藏版)>请在人人文库网上搜索. 1.实验四顺序栈的插入和删除姓名:学号: 日期:一.实验目的: ...

  4. 2 顺序表的插入,删除,查找操作(详细)

    一 顺序表的结构体定义和函数声明 #include<iostream> using namespace std; #define ElemType int  // 自定义 #define ...

  5. c语言编程文件中删除数据结构,C语言数据结构实战(一)顺序表的插入与删除

    今天学习了思成老师的数据结构实战教程 写了一个顺序表 插入和删除的操作 把源码共享给大家 一共包括list.c stu.h main.c list.h   .h文件是头文件 需要引入 具体的功能我都已 ...

  6. 【数据结构】—顺序表的插入、删除、查找操作

    #include <stdio.h> #include <malloc.h> #include <stdlib.h> #define InitSize 10 //默 ...

  7. 【数据结构】平衡二叉树的插入、删除

    目录 定义:什么叫平衡二叉树 定义及原理 不平衡的四种情况 旋转操作 插入节点 删除节点 定义:什么叫平衡二叉树 是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树.1962年,G.M. Ade ...

  8. 顺序表的插入和删除操作

    C语言线性表的插入和删除操作 C语言数据结构的学习之线性表的插入与删除操作 C语言线性表的插入和删除操作 一.插入操作 插入操作的时间复杂度分析: 二.删除操作 删除操作的时间复杂度分析: 查找操作 ...

  9. 数据结构—线性表顺序存储插入和删除操作

    线性表的操作:1.InitList(*L):初始化操作,建立一个空的线性表L 2.ListEmpty(L):判断线性表是否为空,如果为空,返回true,否则返回false 3.ClearList(*L ...

最新文章

  1. 从搞笑到高效,构建敏捷团队的基础原则
  2. mysql去掉两个最高分_从MySQL中的单列获取最高得分值,从两列获取最高得分值...
  3. 每日一皮:千万别和杠精一般见识...
  4. AntD02 Table组件的使用
  5. Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)
  6. 二维数组求最大子矩阵的和
  7. 【原】PSD图标素材的全自动切图方法,适用于IOS、安卓、web前端等领域
  8. 赛锐信息:PM模块的几点看法
  9. js高级学习笔记(b站尚硅谷)-2-数据、变量、内存三者的关系
  10. 计算机桌面计划,如何用便签在电脑桌面安排日程?
  11. 架构系列---QR二维码和扫描二维码登陆原理
  12. linux svc作用,[svc]linux性能监控
  13. NAIC2021-AI+视觉特征编码第一阶段开源方案
  14. 今天过节,摔杯,逼宫,吃瓜吧?
  15. (补基础)数据分析系列:假设检验的基础知识
  16. 转载为什么USART的RX和TX和SPI的MISO、MOSI都被配置成推挽输出,他们还能正常工作
  17. MATLAB中图像的读取与显示及灰度
  18. 基于java面对对象编程范式笔记
  19. python读取txt每一行按照正则匹配hon-正则表达式使用python从文件中过滤和删除特定的多行文本...
  20. 卡尔曼滤波(附python代码)

热门文章

  1. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?
  2. 零基础学Java需要做哪些准备
  3. 计算机网络分为两大阶段,【多选题】计算机网络的发展分为哪些阶段?() A. 远程终端联机阶段 B. 计算机网络阶段 C. 计算机网络互联阶段 D. 信息高速公路阶段...
  4. mysql 5.7 mts_MySQL:MTS和mysqldump死锁
  5. 使用Vue+Spring Boot实现Excel上传
  6. Kylin集群部署和cube使用
  7. linux系统命令学习系列-文件和目录管理
  8. 了解和入门注解的应用
  9. SilverLight 4页面跳转大全
  10. pl/sql中三种游标循环效率对比