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

al万词推广网站引流网站建设 中国联盟网

al万词推广网站引流,网站建设 中国联盟网,个人博客网站,陕西网站建设陕icp备文章目录 4.3 字符串4.3.1 字符串的定义与存储1. 顺序存储2. 链式存储3. C语言实现顺序存储4. C语言实现链式存储代码优化 4.3 字符串 字符串(String)是由零个或多个字符(char)顺序排列组成的有限序列#xff0c;简称为串。例如 “good morning”就是由12个字符构成的一个字符… 文章目录 4.3 字符串4.3.1 字符串的定义与存储1. 顺序存储2. 链式存储3. C语言实现顺序存储4. C语言实现链式存储代码优化 4.3 字符串 字符串(String)是由零个或多个字符(char)顺序排列组成的有限序列简称为串。例如 “good morning”就是由12个字符构成的一个字符串。一般把字符串记作 S ′ ′ a 0 a 1 … a n − 1 ′ ′ Sa_{0} a_{1}…a_{n-1} S′′a0​a1​…an−1′′​ 其中S是串名引号中的字符序列是串值。字符个数是串的长度长度为0的串被称为空串因为它不包含任何字符。需要注意的是空格字符 并不是空串因为它包含一个字符——空格。   若把某个串称为主串则主串中任意个连续的字符组成的子序列被称为子串。子串在主串中第一次出现时其首字符在主串中的序号被称为该子串在主串中的位置。 4.3.1 字符串的定义与存储 字符串在许多非数值计算问题中扮演着重要的角色并在模式匹配、程序编译和数据处理等领域得到广泛应用。   在高级程序设计语言中字符串通常被定义为以特殊字符’\0’称为空字符或字符串结束符结尾的字符序列。这个约定使得在处理字符串时可以方便地确定字符串的结束位置。 关于字符串的存储方式主要有两种常见的方式 顺序存储字符串的字符按照顺序依次存储在连续的内存空间中。这种方式使得字符串的访问和操作效率较高可以通过索引直接访问任意位置的字符。在顺序存储方式中字符串的长度可以通过计算字符个数或者遇到’\0’结束符来确定。 链式存储字符串的字符通过链表的方式进行存储。每个节点包含一个字符和指向下一个节点的指针。链式存储方式可以动态地分配内存适用于长度可变的字符串。但是相比于顺序存储链式存储方式需要更多的内存空间并且访问字符需要遍历链表。 选择何种存储方式取决于具体的应用场景和需求。顺序存储适合于需要频繁访问和操作字符串的情况而链式存储适合于长度可变的字符串或者对内存空间要求较高的情况。关于字符串的基础知识亦可参考前文 【重拾C语言】六、批量数据组织三数组初值字符串、字符数组、字符串数组类型定义 typedef 【重拾C语言】七、指针三指针与字符串字符串与字符串数组指针与字符串的遍历、拷贝、比较反转字符串 1. 顺序存储 串的顺序存储是把一个串所包含的字符序列相继存入连续的字节中通常用数组实现。例如字符串Sstudent, 顺序存储在数组A[10]中则A[0]‘s’A[1]‘t’…A[6]‘t’ . 2. 链式存储 串的链式存储是通过将可用的存储空间划分为一系列大小相同的节点来实现的。每个节点包含两个部分一个存储字符的数据域和一个指向下一个节点的指针域。   例如假设我们有一个字符串S “student”我们可以使用链式存储方式将其表示为一个节点序列。每个节点包含一个字符和一个指向下一个节点的指针。   链式存储的节点结构可以如下表示 struct Node {char data; // 存储字符的数据域Node* next; // 指向下一个节点的指针域 };对于字符串S “student”可以创建以下节点序列 Node 1: data s, next - Node 2 Node 2: data t, next - Node 3 Node 3: data u, next - Node 4 Node 4: data d, next - Node 5 Node 5: data e, next - Node 6 Node 6: data n, next - Node 7 Node 7: data t, next - NULL其中每个节点的data域存储一个字符next指针指向下一个节点。最后一个节点的next指针为空NULL表示链表的结束。 链式存储方式可以动态地分配内存空间适用于长度可变的字符串。通过遍历链表我们可以访问和操作字符串中的字符。然而相对于顺序存储方式链式存储需要额外的指针空间并且访问字符的效率较低。 3. C语言实现顺序存储 #include stdio.hint main() {char S[] student;printf(String S: %s\n, S);return 0; }输出结果为 String S: student使用字符数组S来存储字符串student。该字符串被存储在数组中的连续内存空间中每个字符占据一个数组元素的位置。 4. C语言实现链式存储 接下来让我们使用C语言实现字符串的链式存储我们将使用一个结构体来表示链表的节点每个节点包含一个字符和一个指向下一个节点的指针。 #include stdio.h #include stdlib.hstruct Node {char data;struct Node* next; };void printString(struct Node* head) {struct Node* current head;while (current ! NULL) {printf(%c, current-data);current current-next;}printf(\n); }int main() {struct Node* head (struct Node*)malloc(sizeof(struct Node));struct Node* second (struct Node*)malloc(sizeof(struct Node));struct Node* third (struct Node*)malloc(sizeof(struct Node));struct Node* fourth (struct Node*)malloc(sizeof(struct Node));struct Node* fifth (struct Node*)malloc(sizeof(struct Node));struct Node* sixth (struct Node*)malloc(sizeof(struct Node));struct Node* seventh (struct Node*)malloc(sizeof(struct Node));head-data s;head-next second;second-data t;second-next third;third-data u;third-next fourth;fourth-data d;fourth-next fifth;fifth-data e;fifth-next sixth;sixth-data n;sixth-next seventh;seventh-data t;seventh-next NULL;printf(String S: );printString(head);return 0; }输出结果为 String S: student创建一个链表来表示字符串student。每个节点都包含一个字符和一个指向下一个节点的指针。通过遍历链表我们可以打印出链表中存储的字符从而得到字符串的内容。注意在实际应用中我们应该在使用完链表后释放分配的内存以避免内存泄漏。 代码优化 #include stdio.h #include stdlib.hstruct Node {char data;struct Node* next; };void printString(struct Node* node) {while (node ! NULL) {printf(%c, node-data);node node-next;} }int main() {struct Node* head NULL;struct Node* tail NULL;char characters[] {s, t, u, d, e, n, t};int length sizeof(characters) / sizeof(characters[0]);for (int i 0; i length; i) {struct Node* newNode (struct Node*)malloc(sizeof(struct Node));newNode-data characters[i];newNode-next NULL;if (head NULL) {head newNode;tail newNode;} else {tail-next newNode;tail newNode;}}printf(String S: );printString(head);printf(\n);// 释放链表节点的内存struct Node* current head;while (current ! NULL) {struct Node* temp current;current current-next;free(temp);}return 0; }
http://www.dnsts.com.cn/news/134677.html

相关文章:

  • 优惠券网站建设制作刚做的公司网站搜不到
  • 太原云建站模板如何进行网站建设分析
  • 网站开发协议wordpress内部服务器
  • 建设网站难吗影楼微网站建设
  • 如何做移动支付网站phpcms手机网站
  • 威海网站建设兼职网站自己做还是用程序
  • 特效视频素材网站asp.net做电商网站页面
  • 做网站的主要内容重庆九龙快报
  • 做网站申请域名空间微信公众号做微网站吗
  • 自媒体时代做网站有前途吗zh cn wordpress
  • 在什么网站可以免费做爰片姿势网站
  • 电子游艺网站开发react 网站开发
  • 做棋牌网站建设哪家好西安建设工程有限公司
  • c 大型网站开发案例北京专业seo
  • 淘宝客搜索网站怎么做中国医院建设协会网站首页
  • 广州新际网站建设公司怎么样做外贸网站的效果怎么样
  • 智能家装宁波核心关键词seo收费
  • 无锡高端网站设计开发湛江在线制作网站
  • 网站备案帐号找回河北建网站
  • 沧浪企业建设网站价格全国建设项目验收信息网站
  • wordpress网站地图百度插件营销型网站建设的一般过程包括哪些环节?
  • 哪家做网站公司最好建行官方网站
  • 潍坊建设gc局网站建设部 网站
  • 文山专业网站建设联系电话福彩hao123网址导航
  • asp网站怎样做app怎么知道网站开发语言
  • 常州专业做网站公司小企业网站建设的大品牌
  • 许昌中国建设银行官网站西宁中小企业网站建设
  • 招聘网站建设方案模板下载四川建设厅证件查询
  • 南通做网站优化嘉鱼网站建设哪家好
  • 要搭建网站中级建设消防员证书查询网站