#include <stdio.h>
#include <stdlib.h>#define MAXLEN 255
//定长顺序存储
typedef struct
{char ch[MAXLEN];  //每个分量存储一个字符int length;   //串的实际长度
}SString;//串的初始化
bool StrAssign(SString& T, char* chars)
{int i = 0, len;char* p;for (len = 0, p = chars; *p != '\0'; p++, len++);//求出chars长度if (len == 0){T.length = 0;return false;}else{for (i = 0; i < len; i++){T.ch[i + 1] = *(chars + i);}T.length = len;}return true;}//复制
bool StrCopy(SString& T, char* s)
{int i = 0, len;char* p;for (len = 0, p = s; *p != '\0'; p++, len++);//求出chars长度if (len == 0){T.length = 0;}else{for (i = 0; i < len; i++){T.ch[i + 1] = *(s + i);}T.length = len;}return true;}//判空
bool StrEmpty(SString& T)
{if (T.length == 0)return true;return false;
}//两数比较
int StrCompare(SString S, SString T)
{int i;for (i = 1; i <= S.length && i <= T.length; i++){if (S.ch[i] != T.ch[i]){return S.ch[i] - T.ch[i];}}return S.length - T.length;}//求串长
int Strlength(SString S)
{return S.length;}bool Concat(SString &T, SString S, SString S1)
{int i, j;if (S.length + S1.length > MAXLEN){return false;}else{for (i = 0; i < S.length; i++){T.ch[i + 1] = S.ch[i+1];}for (j = 0; j < S1.length; j++){T.ch[i + j + 1] = S1.ch[j+1];}}T.length = S.length + S1.length;return true;}bool SubString(SString& Sub, SString& S, int pos, int len)
{if (pos + len - 1 > S.length){return false;}for (int i = pos; i < pos + len; i++){Sub.ch[i - pos + 1] = S.ch[i];}Sub.length = len;return true;}bool ClearString(SString& S)
{S.length = 0;return true;
}int Index(SString T, SString S)
{int m = Strlength(T);int n = Strlength(S);SString q;int i = 1;while (i <= m - n + 1){SubString(q,T,i,n);if (StrCompare(q, S) == 0){return i;}i++;}return -1;}int main()
{SString T;SString S;SString S1;char s[20] = "chen";char s1[20] = "en";char s2[20] = "hen";StrAssign(T,s);StrAssign(S, s2);StrAssign(S1, s1);//StrCopy(T, s1);//Concat(T,S,S1);//int ret=StrCompare(S, T);//if (ret > 0)//{//    printf("s大\n");//}//else if (ret == 0)//{//    printf("s与t相等\n");//}//else//{//    printf("t大\n");//}int ret=Index(T,S);if (ret > 0){printf("%d\n",ret);}else if (ret == -1){printf("error\n");}for (int i = 0; i < T.length; i++){printf("%c",T.ch[i+1]);}return 0;
}

数据结构(四)串的顺序存储相关推荐

  1. python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的顺序存储结构. 用Python仿照C语言来实现. 代码地址: 串 的顺序存储结构: # ...

  2. 王道计算机考研 数据结构 (串)

    第四章.串 4.1.1_串的定义和基本操作 串的定义 串VS线性表 串的基本操作 串的比较操作 字符集编码 拓展 :乱码问题 思维导图 4.1.2_串的存储结构 串的顺序存储 使用动态数组(mallo ...

  3. 数据结构:串、数组和广义表

    串 线性结构:线性表.栈和队列.串与数组和广义表 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象限定为字符集.在基本操作上,串和线性表有很大差别.线性表的基本操作主要以单个元素作为操作对象,如查 ...

  4. 数据结构(串、数组和广义表)

    串.数组和广义表 1.串 ①.串的定义 ②.串的顺序存储 ③.串的链式存储 ④.串的模式匹配算法 2.数组 ①.数组的定义 ②.数组的顺序存储 ③.特殊矩阵的压缩存储 3.广义表 ①.广义表的定义 ② ...

  5. 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    存储结构分四类:顺序存储.链接存储.索引存储 和 散列存储. 顺序结构和链接结构适用在内存结构中. 顺序表每个单元都是按物理顺序排列的,如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西, ...

  6. 教老婆学java系列之奇妙的数据结构四

    教老婆学java系列之奇妙的数据结构四 数据结构最后一节 思考题:后台处理一件事,耗时较长,怎么将信息显示在页面上 问题解析: 1.前端触发,后端处理时间较长,前端不能等处理完成. 2.如果不等处理完 ...

  7. Python 数据结构 之 串 的链式存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的链式存储结构. 用Python仿照C语言来实现. 文章转载请注明:  Python 数据 ...

  8. 数据结构复习——串、数组和广义表

    串 零个或多个字符组成的长度有限的序列 主串:包含子串的串 子串的位置:子串的第一个字符在主串的位置 空格串:由一个或者多个空格的串,不是空串 串的顺序存储结构:采用数组 定义一个结构类型:有字符数组 ...

  9. 数据结构(串,数组和广义表)

    4.1串的定义         串(字符串),是由多个字符组成的线性表,是一种内容受限的线性表         串长:串中字符的个数         空串:零个字符的串         子串:串中任意 ...

  10. Python数据结构 四种链表的集合

    python数据结构四个链表的集合 结点的创建 import os# 创建节点 class Node:def __init__(self, data):self.data = dataself.nex ...

最新文章

  1. Hashtable类
  2. 【Redis】详细基础命令 - 学习笔记
  3. Jenkins在Centos7的安装
  4. 别人写好的爬虫怎么运行_怎么写好楷书?
  5. CentOS四种方法自建yum仓库
  6. php置顶文章,php实现文章置顶功能的方法
  7. verilog实现汉明权重_(学习Verilog)6. FIR IP核的基础功能使用总结
  8. 使用libjpeg库在LCD上显示图片
  9. VC中连接mdb数据库及其数据读取方法
  10. mybatis DATE_FORMAT 格式化时间输出
  11. 【NOIP2013】【Luogu1969】积木大赛(贪心,差分)
  12. 多元回归理论及R语言实现
  13. 计算机无法启动怎么重装系统,韩博士教你如何为系统崩溃无法开机的电脑重装系统...
  14. echart柱状图堆列实现百分比显示
  15. 2011年下半年11月份系统架构设计师上午试题答案之二
  16. 再次出现用户净流失,大失颜面的中国移动推出超低价套餐争取用户
  17. c语言栈的实现和表示
  18. 无法删除文件,因为已在Windows资源管理器中打开
  19. 原美团创始人王慧文进军人工智能;极氪完成7.5亿美元A轮融资;Meta正在准备新一轮裁员丨每日大事件...
  20. 《世界上最远的距离》——泰戈尔

热门文章

  1. ArcSDE for SQL Server安装及在ArcMap中创建ArcSDE连接
  2. servlet中文乱码处理
  3. 面试题-ASP 与 ASP.Net的区别?
  4. 显示消息提示对话框(WebForm)
  5. linux 文件inode,linux文件系统-inode学习整理
  6. xmta温度控制仪说明书_XMT系列数显温度控制器使用说明书
  7. response对象设置返回状态_postman 设置全局变量
  8. php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法
  9. java怎样访问servlet_如何访问URL并从java servlet获取响应?
  10. MongoDB 数组类型查询 —— $elemMatch 操作符