其他分享
首页 > 其他分享> > 数据结构-串,数组,广义表

数据结构-串,数组,广义表

作者:互联网

数据结构-串,数组,广义表

王卓老师课程的听课笔记

串,数组,和广义表

串的类型定义以及存储结构

如果将多个字符存放在一个结点中,就可以克服存储密度低的缺点。

#define CHUNKSIZE 80//块的大小可由用户定义
typedef struct Chunk
{
	char ch[CHUNKSIZE];
	struct Chunk *next;
}Chunk;

typedef struct{
    Chunk *head,*tail;//串的头指针和尾指针
    int curlen;//串的当前长度
}LString;//字符串的块链结构

串的模式匹配算法

int Index KMP(SString S,SString T,int pos)
{
	i = pos,j = i;
    while(i<S.length && j<T.length)
    {
        if(j==0||S.ch[i]==T.ch[j])
        {
            i++;
            j++;
        }
        else
        {
            j = next[j];/*i不变,j后退*/
        }
    }
    if(j>T.length)
    {
        return i-T.length;/*匹配成功*/
    }
    else return 0;
}

求next[j]的算法

void get_next(SString T,int &next[])
{
	i = 1;next[1] = 0;j = 0;
	while(i<T.length)
	{
		if(j == 0||T.ch == T.ch[j])
		{
			++i;
			++j;
			next[i] = j;
		}
		else
		{
			j = next[j];
		}
	}
}

数组(就是那个你熟悉的)

特殊矩阵的压缩存储

存储时可以以行序为主序储存下三角

按顺序存储到一维数组当中

三角矩阵的压缩存储

对角矩阵(带状矩阵)

稀疏矩阵

广义表

广义表可以看成是线性表的推广,线性表是广义表的特例

常见算法

存储方式

标签:字符,存储,数组,元素,矩阵,next,广义,数据结构
来源: https://blog.csdn.net/theglasssky/article/details/121915950