感觉上块链的代码实现比数组的代码实现要难一些,估计因为数组的实现书上有伪代码,而块链连伪代码都木有,不过归根到底还是水平不行……哭瞎……╥﹏╥...

/*

数据结构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)——串的块链的代码实现相关推荐

  1. C语言栈顺序存储的数据结构

    typedef int SElemType ; typedef struct{SElemType data [ MAXSIZE ];int top ; } SqStack , * SqtackPtr ...

  2. 串的堆分配存储c语言,数据结构c语言串的堆分配存储源程序

    <数据结构c语言串的堆分配存储源程序>由会员分享,可在线阅读,更多相关<数据结构c语言串的堆分配存储源程序(7页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...

  3. 数据结构中单链表的存储c语言,单链表一 - 数据结构与算法教程 - C语言网

    1. 单链表概念&设计 单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指 ...

  4. 小蚂蚁学习数据结构(16)——串的堆分配储存代码演示

    2019独角兽企业重金招聘Python工程师标准>>> 根据对书上伪代码的理解,编写了这么一段堆分配储存的程序,反正运行着没有什么问题,看看网上其他人的代码,具体细节上有所不同外,思 ...

  5. 有向图php,小蚂蚁学习数据结构(29)——图的存储表示

    图的数组(邻接矩阵)存储表示 方法:将图的顶点信息存储在一个一维数组中,并将它的邻接矩阵存储在一个二位数组中即构成图的数组(邻接矩阵)表示. 无向图的邻接矩阵具有如下特点: 1,它是对称阵,(i,j) ...

  6. 小蚂蚁学习数据结构(4)——线性结构——线性表的链式表示和实现(下)

    2019独角兽企业重金招聘Python工程师标准>>> 用代码实现对链表的操作. /*创建一个链表,实现对链表的创建,插入/追加,删除等操作 */ # include <std ...

  7. 以串结构存储c语言版,数据结构C语言版 串的块链存储表示和实现

    <数据结构C语言版 串的块链存储表示和实现>由会员分享,可在线阅读,更多相关<数据结构C语言版 串的块链存储表示和实现(13页珍藏版)>请在人人文库网上搜索. 1.*数据结构C ...

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

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

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

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

最新文章

  1. Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with regression line)
  2. Linux系统的基本命令
  3. 视频图像处理仿真测试系统
  4. mysql数据库表中的类型_MySQL数据库中表类型MyISAM与InnoDB的区别
  5. ubuntu tree 显示中文的方法
  6. 思科c240 m3 服务器安装系统,2U机架式 思科UCS C240 M3让你心动
  7. 使用Python编写简易定时器
  8. 函数式编程,我心中的 C 位!
  9. 20200217:下一个排列(leetcode31)
  10. mysql 多端口备份_mysql数据库迁移、多端口运行、innobackupex备份
  11. vmpalyer虚拟机的使用教程,小白也能看懂
  12. jsMind 实现复制粘贴
  13. IDEA添加Mapper.xml文件模板
  14. AKM e-compass获取G-sensor的方法
  15. matlab实现adf检验,ADF检验MATLAB程序资料
  16. Arm 架构的过程调用标准
  17. 区块链Baas平台强势来袭,助力企业快速搭建区块链落地项目
  18. ms project2010项目管理软件使用技巧总结
  19. 计算三角形的周长和面积
  20. CentOS7 安装 Oracle XE 图文教程

热门文章

  1. KMP POJ 2752 Seek the Name, Seek the Fame
  2. Java线程(七):锁对象Lock-同步问题更完美的处理方式 .
  3. [转载] AUML——Schedules and Events
  4. 分布式 dynamips+dyangen (更新于07.3.30)
  5. 一阶电路中的时间常数_精确移相电路的设计举例
  6. 启动spark shell
  7. python语句int_python中的int函数
  8. http sxyk.cdn_Discuz x3 开启cdn和https后链接修改教程
  9. java for 线程_如何在for循环中使用多线程
  10. 小米净水器压力传感器_净水器中RO的完整形式是什么?