串的块链存储结构

串的块链:就是将一串字符串分割拆开储存在链表里面,每个节点中可以存储多个单字节。

这是普通的链表每个节点存储一个字符:

下面是块链,每个节点存储多个字符:

下面是串的块链的写入和输出,每个节点存储3个字节的代码:

#include"stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct jiegou{  		//定义结构体 
	char a[3];					//串的块链  数据域储存多个字符 
	struct jiegou *next;
}link;							//利用typedef  将link代表创建结构 
link *initnode(link *head,char *str)		//创建串块链  一次完成创建 
{
	head = (link*)malloc(sizeof(link));		// 创建个首元结点 分配动态内存 
	head->next=NULL;						//将节点指向空 
	link *temp=head;						//定义个指针指向首元结点 
	int length=strlen(str);					//计算输入的字符串长度 
	int num = length/3;						//从输入的字符串长度判断要建立多少个节点   此代码用的是每个节点存储 3 个字符 
	if(length%3!=0)							//如果遇到多出来 一两个字符的 就多建立个节点来存储 
	{
		num++;								//节点+1 
	}
	int i,j;								
	for(i=0;i<num;i++)						//此for循环代表  6个节点循环建立 
	{	
		for(j=0;j<3;j++)					//此for循环代表  每个节点存储3个字符  将字符拆分带入节点 
		{
			if(i*3+j<length){				//如果要代入的字符的数组下标在字符串的长度内 
				temp->a[j]=str[i*3+j];		//将字符带入 
			}
			else
			temp->a[j]='#';					//否则节点内多出来的空数组填入 #  
			
		}
		if(i*3+j<length)					//如果还在字符长度以内 
		{
			link *newnode = (link*)malloc(sizeof(link));		//创建新节点分配动态内存 
			newnode->next=NULL;									//新节点指向空 
			temp->next=newnode;									//上一个节点指针temp指向新节点 
			temp=newnode;										//将指针temp重新指向新节点 
		}
		
	}
	return head;							//返回块链头结点 
}
void printflink(link *head)					//输出块链表 
{
	link *temp=head;						//创建指针指向第一节点 
	int i;									
	while(temp)								//当节点不为空时 
	{
			for(i=0;i<3;i++){				//每个节点有3个字符要输出 
				printf("%c",temp->a[i]);	//依次输出三次 
			}
			temp=temp->next;				//指针指向下个节点 遍历输出 
	}
	
}
int main()
{
	
	link *head=NULL;				//创建头结点
	head=initnode(head,"data.biancheng.net");		//创建串块链   将字符串带入 
	printflink(head);				//输出串块链 
	return 0;
}

运行结果:

分块显示

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wiyoo0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值