第二讲:线性结构-Go语言实现

0经验转行互联网,目前正在同时学习数据结构及GO语言基础。由于数据结构的描述大多是抽象的形式,无法运行,所以产生了用Go语言代替伪代码来学习的想法,增加实际编码经验,同时可以对数据结构和算法有更深入的理解~道阻且长,行则将至;行而不辍,未来可期
摘要由CSDN通过智能技术生成

目录

2.1.1 引子:多项式表示

2.1.2-2.1.3 线性表顺序存储结构

1. 初始化一个空表

2. 查找元素位置

3. 查找元素

4. 插入

5. 删除

2.1.4-2.1.5 线性表顺序存储结构

1.求表长

2.按值查找

3.按位查找

4.插入

5.删除


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
}

平均复杂度:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值