• [数据结构]之顺序表


    [数据结构]之顺序表

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

    数据结构

    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
    ", i, elem)
            }
        }
  • 相关阅读:
    原代码,反码,解释和具体的补充 Java在&gt;&gt;和&gt;&gt;&gt;差异
    开源 自由 java CMS
    Socket方法LAN多线程文件传输
    《》猿从程序书评项目经理-猿自办节目
    今年,我开始在路上
    mysql 拒绝访问的解决办法
    Mysql连接错误:Mysql Host is blocked because of many connection errors
    基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码
    【转】URL编码(encodeURIComponent和decodeURIComponent)
    oracle sql日期比较
  • 原文地址:https://www.cnblogs.com/sxt102400/p/3234231.html
Copyright © 2020-2023  润新知