数据结构之数组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言语实现
- 数据结构——二维矩阵——数组实现(C++)
- C数据结构之顺序栈(数组实现2)
- 数据结构与实现——数组、矩阵、链表、队列、栈、对象、二叉树和红黑树
- 数据结构:用数组实现的定容队列
- 数据结构之数组实现哈希表应用总结篇
- 数据结构——图的数组实现(邻接矩阵表示法)
- C语言 数组的顺序表示与实现 数据结构
- 数据结构之数组实现
- 数据结构之数组16定义及实现
- 数据结构之---C语言实现图的数组(邻接矩阵)存储表示
- VB.NET用Marshal.PtrToStructure 方法实现数据在数组和结构间复制
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- C 数据结构使用数组和链表实现栈
- (3)数据结构——栈(数组)实现
- 看数据结构写代码(19) 数组的实现
- (7)数据结构——循环队列(数组)实现
- 数据结构之stack,queue的数组与链表实现
- 数据结构之数组实现栈结构
- 数据结构与算法-----队列-使用数组(顺序结构)实现