您的位置:首页 > 理论基础 > 数据结构算法

数据结构之数组go言语实现

2016-11-08 23:00 316 查看
package main

import (
"fmt"
)

type Arr struct {
Cnt int
Len int
Pbase *[]int
}

func init_arr(arr *Arr,len int)  {
if len<1{
panic("长度不能小于1")
}
var arr_int=make([]int,len)
arr.Pbase=&arr_int
arr.Cnt=0
arr.Len=len
}
func is_full(arr *Arr) bool {
if arr.Len==arr.Cnt {
return true
}
return false
}
func is_empty(arr *Arr) bool {
if arr.Cnt==0 {
return true
}
return false
}
func append_arr(arr *Arr,val int) bool {
if(is_full(arr)){
return false
}
(*arr.Pbase)[arr.Cnt]=val
arr.Cnt++
return true
}

func insert_arr(arr *Arr,pos,val int) bool {
if is_full(arr) || pos>arr.Cnt-1 || pos<0 {
return false
}
i,j:=pos,arr.Cnt-1
for ;i<=j;j--{
(*arr.Pbase)[j+1]=(*arr.Pbase)[j]
}
(*arr.Pbase)[pos]=val
arr.Cnt++
return true
}

func delete_arr(arr *Arr,pos int)(bool,int){
if is_empty(arr) || pos>arr.Cnt-1 || pos<0{
return false,0
}
i,j:=pos,arr.Cnt-1
re:=(*arr.Pbase)[pos]
for ;i<j;i++ {
(*arr.Pbase)[i]=(*arr.Pbase)[i+1]
}
(*arr.Pbase)[j]=0
arr.Cnt--
return true,re
}

func get(arr *Arr,pos int)int {
if is_empty(arr) || pos>arr.Cnt-1 || pos<0 {
return 0
}
return (*arr.Pbase)[pos]
}

func sort_arr(arr *Arr) bool {
if is_empty(arr) || arr.Cnt==1 {
return false
}
//var tmp int
for i:=0;i<arr.Cnt;i++{
for j:=i;j<arr.Cnt;j++{
if (*arr.Pbase)[j]<(*arr.Pbase)[i] {
tmp:=(*arr.Pbase)[i]
(*arr.Pbase)[i] = (*arr.Pbase)[j]
(*arr.Pbase)[j] = tmp
}
}
}
return true
}

func sort_arr2(arr *Arr) bool {
if is_empty(arr) || arr.Cnt==1 {
return false
}
for i:=arr.Cnt-1;i>0;i--{
for j:=0;j<i;j++{
tmp:=(*arr.Pbase)[j]
if (*arr.Pbase)[j+1]<tmp{
(*arr.Pbase)[j]=(*arr.Pbase)[j+1]
(*arr.Pbase)[j+1]=tmp
}
}
}
return true
}

func show_arr(arr *Arr){
if is_empty(arr) {
return
}
for i:=0;i<arr.Cnt;i++ {
fmt.Print((*arr.Pbase)[i]," ")
}
fmt.Println()
}

func inversion_arr(arr *Arr) bool{
if is_empty(arr) || arr.Cnt==1 {
return false
}
for i,j:=0,arr.Cnt-1;i<=j;i,j=i+1,j-1{

tmp:=(*arr.Pbase)[i]
(*arr.Pbase)[i]=(*arr.Pbase)[j]
(*arr.Pbase)[j]=tmp
}
return true
}

func main() {
var arr Arr
init_arr(&arr,6)

append_arr(&arr,8)
append_arr(&arr,7)
append_arr(&arr,6)
append_arr(&arr,5)
append_arr(&arr,9)
insert_arr(&arr,2,1)
show_arr(&arr)
sort_arr2(&arr)
show_arr(&arr)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  go 数据结构