目录
2.1.1 引子:多项式表示
多项式的关键数据:1. 多项式的项数 n
2. 多项式的每一项:各项系数 ai 及指数 i
方法1:顺序存储结构直接表示
数组各分量对应多项式各项的系数,索引i为对应项的指数
问题:浪费空间(0项也会占内存)
方法2:顺序存储结构表示非零项
数组分量是由系数与指数组成的结构,对应一个非零项
方法3:链表结构存储非零项
type PolyNode struct {
coef int //系数域
expon int //指数域
link *PolyNode //指针域
}
2.1.2-2.1.3 线性表顺序存储结构
线性表(List)n个元素构成的有序序列
顺序存储结构:
package SequentialStorage
const Maxsize = 20
type LNode struct {
Data [Maxsize]int
Last int
}
1. 初始化一个空表
//初始化一个空线性表
func MakeEmpty() LNode {
Ptrl := LNode{
Data: [Maxsize]int{},
Last: -1,
}
return Ptrl
}
2. 查找元素位置
//查找位置——查找X第一次出现的位置(位序)
func FindElement(X int, Ptrl LNode) int {
var i int = 0
for i <= Ptrl.Last {
if Ptrl.Data[i] == X {
break // 找到后立即停止循环,此时i是存储的位置
}
i++
}
if i > Ptrl.Last {
i = -1 //若没有找到,返回-1
}
return i + 1
}
3. 查找元素
//查找元素——根据位序k,返回相应元素
func FindKth(K int, Ptrl LNode) int {
var Kth int
if K-1 > Ptrl.Last || K < 1 {
fmt.Printf("线性表中没有第%d个元素\n", K)
Kth = -100000 //不存在第K位序时,返回-100000(待改进)
} else {
Kth = Ptrl.Data[K-1]
}
return Kth
}
平均复杂度: