当前位置: 首页 > news >正文

顺序串的初始化,建立,插入,查找,删除。

--

//
//顺序串的初始化,建立,插入,查找,删除。  //
//Author:Wang Yong                          //  
//Date: 2010.8.21                           //
//
 
#include <stdio.h>
#include <stdlib.h>
 
#define MAX 1024
 
//
 
//定义顺序串的类型  
 
typedef struct
{
    char ch[MAX];           //存放字符串 
    int len;                //存放串的长度 
} SeqString;
 
//
 
//创建顺序串
 
void StrAssign(SeqString &str,char cstr[])
{
    int i;
    for(i = 0 ;cstr[i] != '\0'; i++)
        str.ch[i] = cstr[i];
    str.len = i;
}
 
//
 
//顺序串的复制
 
void StrCopy(SeqString &s,SeqString t)
{
    int i;
    for(i = 0;i < t.len; i++)
        s.ch[i] = t.ch[i];
    s.len = t.len;
} 
 
//
 
//求串长的算法
 
int StrLength(SeqString s)
{
    return s.len;
}
 
///
 
//串连接的算法
 
SeqString StrConcat(SeqString s,SeqString t)
{
    int i;
    SeqString str;
    for(i = 0 ;i < s.len ; i++)
        str.ch[i] = s.ch[i];
    for(i = 0 ; i < t.len;i++)
        str.ch[i+s.len] = t.ch[i];
    str.len =s.len + t.len;
     
    return  str; 
} 
///
 
//求子串的算法,返回从第i个字符开始,连续的j个字符组成的子串
 
SeqString SubString(SeqString s,int i,int j)
{
    SeqString str;
    int k;
    if(i < 1 || i > s.len || i+j-1 > s.len)
        printf("参数错误!\n"); 
    for(k = i-1;k < i+j;k++ )
        str.ch[k-i+1] = s.ch[k];
    str.len = j;
    return str;
} 
 
///
 
//串插入的算法
 
SeqString InsertString(SeqString &s,int i, SeqString t)
{
    s.len =s.len + t.len;
    int j;
    for(j = s.len - 1; j >- i-1; j--)
        s.ch[j+t.len] = s.ch[j];
    i = i - 1;  
    for(j = 0 ; j < t.len; j++)
        s.ch[i++] = t.ch[j];
    return s; 
}
 
///
 
//删除字串的算法,从s中删除第i个字符开始的长度为j的子串
 
SeqString DeleteString(SeqString &s,int i, int j)
{
    int k;
    if(i < 0 || i > s.len || i+j-1 > s.len)
        printf("参数不正确!\n");
    for(k = i-1 ;k <s.len-j;k++)
        s.ch[k] = s.ch[k+j];
    s.len = s.len - j;
    return s; 
} 
 
/// 
 
// 串的输出
 
void Output(SeqString s)
{
    int i;
    for(i = 0 ; i < s.len; i++)
        printf("%c",s.ch[i]);
    printf("\n");
} 
int main()
{
    char c[100];
    SeqString str;
    printf("请输入要创建的字符串:");
    scanf("%s",c);
    StrAssign(str,c);
    Output(str);
     
    int i = StrLength(str);
    printf("字符串的长度为:%d\n",i);
     
    printf("要复制的字符串:");
    char tempc[100];
    SeqString tstr;
    scanf("%s",tempc);
    StrAssign(tstr,tempc);
    StrCopy(str,tstr);
    Output(str);
     
    printf("将两个字符串链接起来:");
    StrAssign(str,c);
    StrAssign(tstr,tempc);
     
    SeqString newstr = StrConcat(str,tstr);
    Output(newstr);
     
    SeqString sstr; 
    int j;
    printf("请输入所要求的子串位置i和长度j:");
    scanf("%d %d",&i,&j);
    sstr = SubString(newstr,i,j);
    Output(sstr);
     
    printf("请输入要插入的字符串:");
    scanf("%s",c);
    StrAssign(str,c);
    printf("请输入要插入的位置:");
    scanf("%d",&i);
    InsertString(newstr,i,str); 
    Output(newstr);
     
    printf("请输入要删除子串的位置和长度:");
    scanf("%d %d",&i,&j);
    DeleteString(newstr,i,j);
    Output(newstr); 
    return 0;
}

 

--

 

 

 

 

 

 

 

 

 

 

 

 

--

转载于:https://www.cnblogs.com/Ph-one/p/6889860.html

相关文章:

  • quick check
  • http://blog.csdn.net/renfufei/article/details/37725057/
  • github 博客模板
  • 好用的Markdown编辑器一览
  • 复旦大学考研科目
  • 51单片机GPIO口模拟串口通信
  • 第一部分软件工程基础[专业课考试1]
  • 第二部分计算机系统基础[专业课考试2]
  • 第三部分数据结构[专业课考试3]
  • 深入理解SP、LR和PC
  • 数据结构ADT是什么
  • 带哨兵节点和不带哨兵节点的单链表操作的对比
  • ACM
  • 可信执行环境(TEE)介绍 与应用
  • 数据结构-向量
  • .pyc 想到的一些问题
  • [deviceone开发]-do_Webview的基本示例
  • [Vue CLI 3] 配置解析之 css.extract
  • [译]如何构建服务器端web组件,为何要构建?
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 345-反转字符串中的元音字母
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CSS3 变换
  • HTTP那些事
  • iOS编译提示和导航提示
  • JavaScript学习总结——原型
  • Java多态
  • JAVA之继承和多态
  • nginx 负载服务器优化
  • node-glob通配符
  • python学习笔记-类对象的信息
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从PHP迁移至Golang - 基础篇
  • 面试总结JavaScript篇
  • 小程序测试方案初探
  • No resource identifier found for attribute,RxJava之zip操作符
  • 白色的风信子
  • 带你开发类似Pokemon Go的AR游戏
  • 我们雇佣了一只大猴子...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (python)数据结构---字典
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net IOC框架入门之一 Unity
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET项目中存在多个web.config文件时的加载顺序
  • @test注解_Spring 自定义注解你了解过吗?
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具