数据结构里的串是什么东西?

就是字符串啦
服务器君一共花费了283.855 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议
  • 上个月终于把栈和队列专题完成了,其实从开始到现在,我们主要学到的东西其实就是数组与链表的各种变种。那么这个月开始,我们轻松点,学习些别的东西。那么开启新的专题:串。

早先的计算机在被发明时,主要作用是做一些科学和工程的计算工作,也就是现在我们理解的计算器,只不过它比小小计算器功能更强大、速度更快一些。后来发现,在计算机上作非数值处理的工作越来越多,使得我们不得不需要引入对字符的处理。于是就有了字符串的概念。

比如我们现在常用的搜索引擎,当我们在文本框中输入“简明 现代"时,它已经把我们想要的“简明现代魔法”列在下面了(联想词)。显然这里网站作了一个字符串査找匹配的工作:

今天我们就是来研究“串”这样的数据结构。先来看定义。

串(string)是由零个或多个宇符组成的有限序列,又名叫字符串。

一般记为s = "a,a2……an" (n>0),其中,s是串的名称,用双引号(有些书中也用单引号)括起来的字符序列是串的值,注意单引号不属于串的内容。ai(1<= i<= n)可以是字母、数字或其他字符,i就是该字符在串中的位置。串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。零个字符的串称为空串(null string),它的长度为零,可以直接用两双引号一表示,也可以用希腊Φ字母来表示。所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。

一些特别的字符串

还有一些概念需要解释。

空格串,是只包含空格的。注意它与空串的区别,空格串是有内容有长度的,而且可以不止一个空格。

子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串。

子串在主串中的位置就是子串的第一个字符在主串中的序号。

  • 比如在英语单词中,即使是friend也有个end,即使是believe也有个lie。

这里的"end", "lie"其实可以认为是"friend"、"believe"这些单词字符串的子串。

比起前面说到的链表,串简单吧?先难后易,是一种很好的学习方法。

延伸阅读

此文章所在专题列表如下:

  1. 数据结构里的串是什么东西?
  2. 如何比较串的大小
  3. 串的抽象数据类型ADT
  4. 串的顺序存储结构
  5. 串最基本的5个操作的C实现
  6. 寻找子串在主串中的位置
  7. 如何在串中插入串
  8. 如何在串中删除特定长度的子串
  9. 字符串中的子串替换
  10. 题外话:谈谈malloc()和free()

本文地址:http://www.nowamagic.net/librarys/veda/detail/2366,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/2366

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《C陷阱与缺陷》 Andrew Koenig (作者), 高巍 (译者)

《C和C++经典著作•C陷阱与缺陷》适合有一定经验的C程序员阅读学习,即便你是C编程高手,《C和C++经典著作•C陷阱与缺陷》也应该成为你的案头必备书籍。作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作《C和C++经典著作•C陷阱与缺陷》的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。《C和C++经典著作•C陷阱与缺陷》分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章的篇幅给出了若干具有实用价值的建议。

更多计算机宝库...