数据结构
Yuan_sr
这个作者很懒,什么都没留下…
展开
-
数据结构--哈希表
哈希表的一种Go语言实现package mainimport ( "fmt" "os")//链表中的数据的信息type Emp struct { Id int Name string Next *Emp}func (e *Emp) ShowSelf() { fmt.Printf("链表%d 找到了该节点 %d\n", e.Id % 7, e.Id)}//定义链表,该链表不带头结点type EmpLink struct { Head *Emp}//EmpLink原创 2021-07-02 20:45:38 · 69 阅读 · 0 评论 -
数据结构--栈
栈的一种Go语言实现package mainimport ( "errors" "fmt")type Stack struct { MaxTop int //栈的最大容量 Top int //栈顶 arr [5]int}func (s *Stack) Push(val int) (err error) { //判断栈是否已满 if s.Top == s.MaxTop - 1 { fmt.Println("stack full") return errors.New("原创 2021-07-02 20:43:40 · 83 阅读 · 0 评论 -
数据结构--快速排序
快速排序是效率比较高的一种排序算法,其思想主要是递归package mainimport "fmt"func QuickSort(left int, right int, arr *[6]int) { l := left r := right pivot := arr[(left + right) / 2] for ; l < r; { for ; arr[l] < pivot; { l++ } for ; arr[r] > pivot; { r-原创 2021-07-02 20:41:28 · 54 阅读 · 0 评论 -
数据结构--插入排序
插入排序的一种Go实现package mainimport "fmt"//插入排序是仅次于快速排序的高效排序算法,插入排序和冒泡排序、选择排序一样都是内部排序(内存)//与其他两个不同的是插入排序是将无序的向有序的数组里面插入,因此区别于其他两个都是循环无序的排序算法func InsertSort (arr *[5]int) { //插入排序的核心思想是假设第一个元素为有序的,后面的都是无序的,挨个将后面无序的插入到前面有序的过程 for i := 1; i < len(arr);原创 2021-07-02 20:39:48 · 74 阅读 · 0 评论 -
数据结构--选择排序
选择排序的一种Go实现package mainimport "fmt"//选择排序的核心是第n次将数组中后面len(arr) - n个元素的最大或者最小值与第n个元素进行交换func selectSort(arr *[5]int){ for j := 0; j < len(arr) - 1; j++ { //循环次数为len(arr) - 1 //假设第一个元素的值最大(降序排序) max := arr[j] maxIndex := j //遍历后面的元素进行比较 f原创 2021-07-02 20:37:48 · 57 阅读 · 0 评论 -
数据结构--环形链表
环形链表的一种Go语言实现package mainimport "fmt"//定义一个环形链表的节点结构体type circleSingleLink struct { id int name string next *circleSingleLink}//插入节点到环形链表func Insert(head, newnode *circleSingleLink) { //判断是否为空链表 if head.next == nil{ //如果为空则把添加的第一个元素给头节点,这里原创 2021-07-02 20:35:38 · 156 阅读 · 0 评论 -
数据结构--队列(链表实现)
队列的一种链表简单实现package mainimport "fmt"type Queue struct { id int name string next *Queue}//Pushfunc Push(head, node *Queue){ node.next = head.next head.next = node}//Popfunc Pop(head *Queue) (node *Queue){ temp := head for { if temp.next原创 2021-07-02 20:33:55 · 71 阅读 · 0 评论 -
数据结构--双向链表
双向链表的一种Go语言实现package mainimport "fmt"//定义节点信息type dNode struct { id int name string pre *dNode next *dNode}//尾部插入节点func dInsertTail(head, newNode *dNode) { //定义一个临时游走变量 temp := head for { if temp.next == nil{ break //游走到链表尾部后跳出循环进行插入数原创 2021-07-02 20:30:55 · 55 阅读 · 0 评论 -
数据结构--单向链表
单向链表的一种Go语言实现package mainimport "fmt"type Node struct { no int name string next *Node}//实现尾部插入一个节点到链表(队列Push的一种实现)func InsertTail(head *Node, newNode *Node){ //先找到链表的最后一个节点,需要保持头结点不动,这里创建一个中间临时节点 temp := head //遍历链表直到最后一个节点进行插入 for { if t原创 2021-07-02 20:27:57 · 72 阅读 · 0 评论 -
数据结构--队列(数组)的一种实现
单向队列(数组实现)package mainimport ( "errors" "fmt" "os")//队列是一种重要的数据结构,应用也相对广泛,实现队列的方式主要有数组和链表两种方式//下面首先使用数组实现一个简单的单向队列//队列的信息包括队列的大小、队列的存储形式(数组)、队列的头(不指向第一元素)、队列的尾(指向最后一个元素)//对列的操作方法主要有向队列添加一个元素、从队列中获取一个元素、显示队列中的元素//定义一个结构体用于保存队列的信息type signalQue原创 2021-06-20 23:22:06 · 105 阅读 · 0 评论 -
数据结构--稀疏矩阵的一种实现
package mainimport ( "encoding/json" "fmt" "os")//定义一个结构体保存原始矩阵的信息type sparseNode struct { Row int Col int Val int}//定义一个结构体保存反序列化后矩阵的信息type unSparseNode struct { Row int Col int Val int}func main(){ //1.定义一个原始矩阵 var arr [11][11]int原创 2021-06-20 23:18:45 · 139 阅读 · 0 评论 -
冒泡排序(数组)的一种实现
package mainimport "fmt"//数组的冒泡排序func BubbleSort(arr *[5]int){ for i := 0; i < len(*arr) - 1; i++{ for j := 0; j < len(*arr) - 1 - i; j++{ if (*arr)[j] > (*arr)[j + 1] { (*arr)[j], (*arr)[j + 1] = (*arr)[j + 1], (*arr)[j] } }原创 2021-06-20 23:16:00 · 57 阅读 · 0 评论 -
二分查找的一种实现
package mainimport "fmt"func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int){ if leftIndex > rightIndex{ fmt.Println("没有找到", findVal) } middleIndex := (leftIndex + rightIndex) / 2 if (*arr)[middleIndex] > findVal { Bin原创 2021-06-20 23:11:38 · 55 阅读 · 0 评论