#include<iostream>
#include<stdlib.h>
#define linkNum 3//全局设置链表中节点存储数据的个数
using namespace std;
typedef struct Link {
char a[linkNum]; //数据域可存放 linkNum 个数据
struct Link * next;
}link;
//初始化链表,其中head为头指针,str为存储的字符串
link *initLink(link *head, char *str)
{
int length = strlen(str);
//根据字符串的长度,计算出链表中使用结点的个数
int num = length/linkNum;
if (length%linkNum)
{
num++;
}
//创建并初始化首元节点
head = (link*)malloc(sizeof(link));
head->next = NULL;
link *temp = head;
//初始化链表
for (int i = 0; i<num; i++)
{
int j = 0; //j代表每个结点的数组索引
for (; j<linkNum; j++)
{
if (i*linkNum + j < length)
{
temp->a[j] = str[i*linkNum + j];//数组赋值
}
else
temp->a[j] = '#';//数组剩余空间赋值#
}
if (i*linkNum + j < length) //若当前结点长度仍不满足目标字符串长度,则继续申请新的结点
{
link * newlink = (link*)malloc(sizeof(link));
newlink->next = NULL;
temp->next = newlink;
temp = newlink;
}
}
return head;
}
//输出链表
void displayLink(link * head)
{
link * temp = head;
while (temp) {
for (int i = 0; i < linkNum; i++) {
cout<<temp->a[i];
}
temp = temp->next;
}
}
int main()
{
link * head = NULL;
head = initLink(head, "data.biancheng.net");
displayLink(head);
return 0;
}
数据结构之字符串及BF算法
最新推荐文章于 2023-09-22 22:16:09 发布