串的块链存储c语言栈,小蚂蚁学习数据结构(18)——串的块链的代码实现
感觉上块链的代码实现比数组的代码实现要难一些,估计因为数组的实现书上有伪代码,而块链连伪代码都木有,不过归根到底还是水平不行……哭瞎……╥﹏╥...
/*
数据结构C语言版 串的块链存储表示和实现
*/
# include
# include
# include
/* 链表元素结构体 */
typedef struct List
{
//数据域
char data;
//指针域
struct List * pNext;
}List, * PLIST;
/* 串结构体 */
typedef struct String
{
PLIST pHead, pTail;
int length;
}STRING, * PSTRING;
/* 函数前置声明 */
/* 初始化一个串 */
void InitString( PSTRING );
/* 为一个串赋值 */
bool StrAssign( PSTRING, char * );
/* 遍历这个块链串 */
void TravelerString( PSTRING );
/* 返回串的长度 */
int StrLength( PSTRING );
/* 拷贝一个串 */
bool StrCopy( PSTRING, PSTRING );
/* 拼接两个串常量编程一个块链 */
bool Concat( PSTRING, char *, char * );
/* 初始化这个串 */
void InitString( PSTRING str )
{
str -> pHead = NULL;
str -> pTail = NULL;
str -> length = 0;
}
/*
复制一个串常量
*/
bool StrAssign( PSTRING str, char * arr )
{
int i, j;
PLIST p, q;
//串常量的长度
for( i = 0; arr[i] != '\0'; ++i);
str -> length = i;
for( j = 0; j
{
//如果j 等于 0,说明是首节点
if( 0 == j )
{
p = ( PLIST )malloc( sizeof( List ) );
if( NULL == p )
{
printf("动态内存分配失败\n");
return false;
}
p -> data = arr[j];
p -> pNext = NULL;
str -> pHead = p;
}
else
{
q = ( PLIST )malloc( sizeof( List ) );
if( NULL == q )
{
printf("动态内存分配失败\n");
return false;
}
q -> data = arr[j];
q -> pNext = NULL;
p -> pNext = q;
p = q;
}
}
str -> pTail = p;
return true;
}
/* 打印出这个串 */
void TravelerString( PSTRING str )
{
PLIST p = str -> pHead;
while( NULL != p )
{
printf( "%c ", p -> data );
p = p -> pNext;
}
printf("\n");
}
/* 返回串的长度 */
int StrLength( PSTRING str )
{
return str -> length;
}
/* 拷贝一个串的长度 */
bool StrCopy( PSTRING str, PSTRING str1 )
{
PLIST p, q, r;
r = str1 -> pHead;
str -> length = str1 -> length;
while( NULL != r )
{
if( r == str1 -> pHead )
{
p = str -> pHead = ( PLIST )malloc( sizeof( List ) );
p -> data = r -> data;
p -> pNext = NULL;
r = r -> pNext;
}
else
{
q = ( PLIST )malloc( sizeof( List ) );
q -> data = r -> data;
q -> pNext = NULL;
p -> pNext = q;
p = q;
r = r -> pNext;
}
}
str -> pTail = p;
return true;
}
/* 拼接两个字符串常量 */
bool Concat( PSTRING str, char * s1, char * s2 )
{
STRING a1, a2;
InitString( &a1 );
InitString( &a2 );
StrAssign( &a1, s1 );
StrAssign( &a2, s2 );
str -> pHead = a1.pHead;
str -> pTail = a2.pTail;
a1.pTail -> pNext = a2.pHead;
return true;
}
int main( void )
{
//创建一个串
STRING str, str1, str2;
InitString( &str );//初始化这个串
InitString( &str1 );
InitString( &str2 );
printf("将字符串常量“abcde”赋值给str\n");
StrAssign( &str, "abcde" );
printf("打印出str的值:");
TravelerString( &str );
printf( "打印出串str的长度:%d\n", StrLength( &str ) );
//拷贝str 到 str1
printf("复制串str到str1,遍历str1:\n");
StrCopy( &str1, &str );
TravelerString( &str1 );
//将两个串常量,拼接成一个串块链
Concat( &str2, "hello", "world" );
printf("将“hello”“world”拼接成一个新的块链串:\n");
TravelerString( &str2 );
return 0;
}
/*
在VC++6.0中输出的结果是:
=============================
将字符串常量“abcde”赋值给str
打印出str的值:a b c d e
打印出串str的长度:5
复制串str到str1,遍历str1:
a b c d e
将“hello”“world”拼接成一个新的块链串:
h e l l o w o r l d
=============================
总结:
无非都是线性表,跟操作线性表的感觉一样一样的。
有时间多把线性结构、栈、队列那里再练练,考试的重点。
*/
扛不住了,我要吐了,不谢了,就这吧,估计考试也不会考这里的大题……
串的块链存储c语言栈,小蚂蚁学习数据结构(18)——串的块链的代码实现相关推荐
- C语言栈顺序存储的数据结构
typedef int SElemType ; typedef struct{SElemType data [ MAXSIZE ];int top ; } SqStack , * SqtackPtr ...
- 串的堆分配存储c语言,数据结构c语言串的堆分配存储源程序
<数据结构c语言串的堆分配存储源程序>由会员分享,可在线阅读,更多相关<数据结构c语言串的堆分配存储源程序(7页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...
- 数据结构中单链表的存储c语言,单链表一 - 数据结构与算法教程 - C语言网
1. 单链表概念&设计 单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指 ...
- 小蚂蚁学习数据结构(16)——串的堆分配储存代码演示
2019独角兽企业重金招聘Python工程师标准>>> 根据对书上伪代码的理解,编写了这么一段堆分配储存的程序,反正运行着没有什么问题,看看网上其他人的代码,具体细节上有所不同外,思 ...
- 有向图php,小蚂蚁学习数据结构(29)——图的存储表示
图的数组(邻接矩阵)存储表示 方法:将图的顶点信息存储在一个一维数组中,并将它的邻接矩阵存储在一个二位数组中即构成图的数组(邻接矩阵)表示. 无向图的邻接矩阵具有如下特点: 1,它是对称阵,(i,j) ...
- 小蚂蚁学习数据结构(4)——线性结构——线性表的链式表示和实现(下)
2019独角兽企业重金招聘Python工程师标准>>> 用代码实现对链表的操作. /*创建一个链表,实现对链表的创建,插入/追加,删除等操作 */ # include <std ...
- 以串结构存储c语言版,数据结构C语言版 串的块链存储表示和实现
<数据结构C语言版 串的块链存储表示和实现>由会员分享,可在线阅读,更多相关<数据结构C语言版 串的块链存储表示和实现(13页珍藏版)>请在人人文库网上搜索. 1.*数据结构C ...
- 数据结构:串、数组和广义表
串 线性结构:线性表.栈和队列.串与数组和广义表 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象限定为字符集.在基本操作上,串和线性表有很大差别.线性表的基本操作主要以单个元素作为操作对象,如查 ...
- 数据结构(串,数组和广义表)
4.1串的定义 串(字符串),是由多个字符组成的线性表,是一种内容受限的线性表 串长:串中字符的个数 空串:零个字符的串 子串:串中任意 ...
最新文章
- Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with regression line)
- Linux系统的基本命令
- 视频图像处理仿真测试系统
- mysql数据库表中的类型_MySQL数据库中表类型MyISAM与InnoDB的区别
- ubuntu tree 显示中文的方法
- 思科c240 m3 服务器安装系统,2U机架式 思科UCS C240 M3让你心动
- 使用Python编写简易定时器
- 函数式编程,我心中的 C 位!
- 20200217:下一个排列(leetcode31)
- mysql 多端口备份_mysql数据库迁移、多端口运行、innobackupex备份
- vmpalyer虚拟机的使用教程,小白也能看懂
- jsMind 实现复制粘贴
- IDEA添加Mapper.xml文件模板
- AKM e-compass获取G-sensor的方法
- matlab实现adf检验,ADF检验MATLAB程序资料
- Arm 架构的过程调用标准
- 区块链Baas平台强势来袭,助力企业快速搭建区块链落地项目
- ms project2010项目管理软件使用技巧总结
- 计算三角形的周长和面积
- CentOS7 安装 Oracle XE 图文教程
热门文章
- KMP POJ 2752 Seek the Name, Seek the Fame
- Java线程(七):锁对象Lock-同步问题更完美的处理方式 .
- [转载] AUML——Schedules and Events
- 分布式 dynamips+dyangen (更新于07.3.30)
- 一阶电路中的时间常数_精确移相电路的设计举例
- 启动spark shell
- python语句int_python中的int函数
- http sxyk.cdn_Discuz x3 开启cdn和https后链接修改教程
- java for 线程_如何在for循环中使用多线程
- 小米净水器压力传感器_净水器中RO的完整形式是什么?