数据结构之数组结构

数组结构
线性表
数组
矩阵
矩阵相加

矩阵相乘

矩阵转置

稀疏矩阵

上三角矩阵

以行为主
k = n ∗ ( i − 1 ) − i ( i − 1 ) / 2 + j k = n * (i-1) – i(i-1)/2 + j
k=n∗(i−1)−i(i−1)/2+j

以列为主

k = j ( j − 1 ) / 2 + i k=j(j-1)/2 + i
k=j(j−1)/2+i

右上三角矩阵
左上三角矩阵
下三角矩阵

以行为主
k = i ( i − 1 ) / 2 + j k = i(i-1)/2 + j
k=i(i−1)/2+j

以列为主
k = n ∗ ( j − 1 ) + i − j ( j − 1 ) / 2 k = n * (j-1) + i – j(j -1) /2
k=n∗(j−1)+i−j(j−1)/2

右下三角矩阵

左下三角矩阵

带状矩阵

数组与多项式
设计一个python程序,进行多项式的计算:A(x) = 3x^4 + 7x^3 + 6x +2和B(x) = x^4 +5x^3 + 2x^2 + 9的加法运算
1
一个多项式如果使用数组结构存储在计算机中,有一下两种方法表示:

使用一个n+2长度的一组数组来存放,数组的*个位置存储*大指数n项的系数,其他位置按照指数n递减,按序存储对应项的系数:P=(n,an,an-1,…,a1,a0),存储在A(1:n+2)中,例如:

P(x) = 2x^5 + 3x^4 + 5x^2 + 4x + 1可以转换为A数组来表示,例如A=[5,2,3,0,5,4,1]。

只存储多项式中的非零项。如果有m项非零项,就使用2m+1的数组来存储每一个非零项的指数和系数,数组的*个元素为此多项式非零项的个数。

P(x) = 2x^5 + 3x^4 + 5x^2 + 4x + 1可以表示为A(1:2m+1)数组,例如:

A=[5,2,5,3,4,5,2,4,1,1,0]

采用*种多项式的方法进行上述题目的运算

“””
A(x) = 3x^4 + 7x^3 + 6x + 2 和 B(x) = x^4 + 5x^3 + 2x^2 + 9的加法运算
“””

ITEMS = 6
“””
poly:表示多项式的数组
items:数组的长度
“””
def PrintPoly(Poly,items):
#*高指数
MaxExp = Poly[0]
for i in range(1,Poly[0] + 2):
MaxExp =MaxExp – 1
if Poly[i] != 0:
if(MaxExp + 1) != 0:
print(‘ %dx^%d ‘ %(Poly[i],MaxExp + 1),end=”)
else:
print(‘ %d’ %Poly[i],end=”)
if MaxExp >= 0:
print(‘+’,end=”)
print()

“””
Poly1:多项式1
Poly2:多项式2
“””
def PolySum(Poly1,Poly2):
result = [None] * ITEMS
result[0] = Poly1[0]
for i in range(1,Poly1[0] + 2):
result[i] = Poly1[i] + Poly2[i]
PrintPoly(result,ITEMS)

PolyA = [4,3,7,0,6,2]
PolyB = [4,1,5,2,0,9]
print(“多项式A=>”,end=”)
PrintPoly(PolyA,ITEMS)
print(“多项式B=>”,end=”)
PrintPoly(PolyB,ITEMS)
print(“A+B=>”,end=”)
PolySum(PolyA,PolyB)
%title插图%num