基本运算符优先级存储方式及实现(树的方式,稀疏矩阵的压缩存储)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/chu_jian86a/article/details/78260458

以树的方式存储优先级,只需保留最左侧子树即可,其余位置皆为0元素。采用顺序存储方式,可以较快判断出该运算符号的优先级,同时,采用稀疏矩阵压缩,可节省大量存储空间。

如图,运算符的层数即为其优先级,其中只保存一条支路的树,其余空位置全部补0,然后采用稀疏矩阵的方式进行存储。

压缩矩阵存储通过三元组存储实现:

1 1 1
2 1 2
3 2 1 *
4 2 2 /
5 3 1 +
6 3 2  -
定义结构体如下:

typedef struct    //三元组结构 
{
	int i,j;//元素的行列下标 
	char v;//元素值 
}tuple;
typedef struct    //三元组表结构 
{
	int m,n,t;//行数、列数、非零元素个数 
	tuple data[maxnum];
}spmatrix;



猜你喜欢

转载自blog.csdn.net/chu_jian86a/article/details/78260458