C语言

您所在的位置:网站首页 temp在c语言怎么用 C语言

C语言

2023-03-14 05:53| 来源: 网络整理| 查看: 265

文章目录 一、字符串二、堆分配存储三、块链存储结构结语

一、字符串

数据结构中,字符串单独用一种存储结构存储,称为串存储结构 空串:存储0个字符的串,如:s=“”(双引号紧挨着) 空格串:只包含空格字符串的串,如s=" “(五个空格) 子串和主串:a=“shujujiegou”, b=“shuju”,a中也包含"shuju”,因此串a为串b的主串,串b为串a的子串

字符串包含三种串的存储结构: 定长顺序存储:用普通数组(又称静态数组)存储 堆分配存储:用动态数组存储字符串 块链存储:用链表存储

二、堆分配存储

具体实现就是使用动态数组存储字符串 堆区的内存空间需要手动使用malloc函数申请,不用后使用free函数释放

// // Created by 醉人饮梦 on 2023/2/26. // #include #include #include int main() { char* a1 = NULL; char* a2 = NULL; a1 = malloc(10 * sizeof(char)); strcpy_s(a1,6,"hello"); a2 = malloc(10 * sizeof(char)); strcpy_s(a2,7," world"); int length1 = (int)strlen(a1); int length2 = (int)strlen(a2); // 总长 int length = length1 + length2; if(length1 a1[i] = a2[i - length1]; } a1[length] = '\0'; printf("%s", a1); free(a1); free(a2); exit(0); } 三、块链存储结构

具体实现采用 链表结构存储数据 例子采用单链表无头结点

各结点仅存储 1 个数据元素的链表 各结点仅存储 4 个数据元素的链表 使用链表存储字符串,其最后一个结点的数据域不一定会被字符串占满,通常使用"#"或其他特殊字符将最后一个结点填满;

如何确定个数: 串的长度和存储的空间大小:如果数据量大,链表申请的存储空间有限,此时应尽可能地让各结点存储更多的数据,提高空间的利用率(每第一个结点,都要申请一个指针域的空间) 程序实现的功能:如果需要做大量的插入或删除操作,则应尽可能减少各结点存储数据的数量

// // Created by 醉人饮梦 on 2023/2/26. // #include #include #include // 链表中各节点存储数据的个数 #define LINKNUM 3 typedef struct link{ char a[LINKNUM]; struct link* next; }link; link* initLink(link* head,char* str) { int length = (int)strlen(str); // 根据字符串的长度,计算链表使用结点的个数 int num = length/LINKNUM; if(length%LINKNUM){ num++; } head = malloc(sizeof(link)); head->next = NULL; link* temp = head; for (int i = 0; i if(i * LINKNUM + j temp->a[j] = '#'; } } // 判断是否还有下一节点 if(i * LINKNUM + j link* temp = head; while (temp){ for (int i = 0; i link* head = NULL; head = initLink(head, "hello world"); display(head); return 0; } 结语

个人记录学习所用,如有错误之处还请指出,谢谢



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3