博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数据结构]之顺序表
阅读量:5366 次
发布时间:2019-06-15

本文共 2125 字,大约阅读时间需要 7 分钟。

[数据结构]之顺序表

描述

顺序表:是指在一段连续的存储单元存储数据的线性表。多使用数组来实现。

数据结构

1 属性:

最大长度 CAP

当前长度 Length

存储数组 Elements

2 操作:

Get(index) 获取元素

Insert(index,elem) 插入元素

Delete(index) 删除第index个元素

 

## 实现

使用go语言实现代码如下:

package main        import (        "fmt"    )        const CAP = 20        type SqList struct {        elemets [CAP]string        length  int    }        /*     *    获取顺序表的第index元素     */    func (list *SqList) Get(index int) (string, error) {        if list.length == 0 || index < 0 || index > list.length-1 {            return "", fmt.Errorf("the index %d Out Of Bounds", index)            }        return list.elemets[index], nil    }        /*     *    插入顺序表元素,在第index位置     */    func (list *SqList) Insert(index int, elem string) error {        if list.length == CAP {            return fmt.Errorf("the list is full")        }        if index < 0 || index > list.length {            return fmt.Errorf("the index %d Out Of Bounds", index)        }        //如果不是在最后插入,需要移动后面的元素        if index < list.length {            for i := list.length - 1; i >= index; i-- {                list.elemets[i+1] = list.elemets[i]                }        }        list.elemets[index] = elem        list.length++        return nil    }        /*     *    删除顺序表元素,在第index位置     */    func (list *SqList) Delete(index int) error {        if list.length == 0 {            return fmt.Errorf("the list is empty")        }        if index < 0 || index > list.length {            return fmt.Errorf("the index %d Out Of Bounds", index)        }        //如果不是在最后删除,需要移动后面的元素        if index < list.length {            for i := index; i < list.length; i++ {                list.elemets[i] = list.elemets[i+1]                }        }            list.length--        return nil    }        func main() {            list := &SqList{}            list.Insert(0, "AAAAA")        list.Insert(1, "BBBBB")        list.Insert(2, "CCCCC")            list.Delete(1)            for i := 0; i < list.length; i++ {            elem, _ := list.Get(i)            fmt.Printf("get elem %d value:%v\n", i, elem)        }    }

 

转载于:https://www.cnblogs.com/sxt102400/p/3234231.html

你可能感兴趣的文章
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>