数据结构第八周项目二-建立链串的算法库

本文探讨链串,一种采用链式存储结构的字符串。链串与单链表类似,但每个节点可储存多个字符。节点大小大于1时,不满的字符域用特殊符号填充。链串储存密度通常大于顺序串,适用于串修改少的情况。通常设定链串节点大小为1。文章附带链串节点的头文件和源文件实现。
摘要由CSDN通过智能技术生成

在项目一中介绍了顺序串的构成利弊,这次来了解一下链串。

顾名思义,采用链式储存结构的串叫做链串

链串的组织形式与一般的单链表相似,主要区别在于链串中的一个结点可以储存多个字符,通常将链串中每个结点所储存的字符个数称为结点大小

当结点大小大于1时,链串的尾结点的各个数据域不一定总能全被字符占满,此时应在这些未占用的数据域里补上不属于字符集的特殊符号(例如‘#’字符),以示区别。(书上的大白话)。(意思就是链式储存当结点中放了多个字符的时候,结果尾结点字符没放满,为了填满它放一些与字符区分的特殊符号。)

链串储存的密度一般比非紧凑格式顺序串储存密度大,而且是结点大小越大,储存密度越大(毕竟每个结点都是放的满满的,尾结点除外),因此它适合于那种串修复很少的情况;与之相反,结点大小越小,相关操作实现起来越方便,但就是储存密度较小。

一般情况下,规定链串结点大小均为1。

以下为一个链串结点的实现:

头文件(liString.h)

*Copyright (c) 2017,烟台大学计算机与控制工程学院 
*All rights reserved. 
*文件名称:多文件组织 
*作    者:张昕 
*完成日期:2017年10月19日 
*版 本 号:v1.0 
*/

#ifndef LISTRING_H_INCLUDED
#define LISTRING_H_INCLUDED
typedef struct snode
{
    char data;
    struct snode *next;
} LiString;

void StrAssign(LiString *&s,char cstr[]);   //字符串常量cstr赋给串s
void StrCopy(LiString *&s,LiString *t); //串t复制给串s
bool StrEqual(LiString *s,LiString *t); //判串相等
int StrLength(LiString *s); //求串长
LiString *Concat(LiString *s,LiString *t);  //串连接
LiString *SubStr(LiString *s,int i,int j);  //求子串
LiString *InsStr(LiString *s,int i,LiString *t) ;   //串插入
LiString *DelStr(LiString *s,int i,int j);  //串删去
LiString *RepStr(LiString *s,int i,int j,LiString *t);  //串替换
void DispStr(LiString *s);  //输出串


#endif // LISTRING_H_INCLUDED

源文件(liString.cpp)

#include <stdio.h>
#include <malloc.h>
#include "liString.h"

void StrAssign(LiString *&s,char cstr[])    //字符串常量cstr赋给串s
{
    int
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值