Python 数据结构 之 线性表 的链式存储结构

用Python 来实现 C语言中 线性表的链式存储结构。

文章转载请注明:  Python 数据结构 之 线性表 的链式存储结构

代码地址

https://github.com/WenkeZhou/PythonDataStructure/blob/master/struct/List/MyLKList.py


# !/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'MrHero'


class SqList(object):

    def __init__(self, size):
        self.data = list(None for _ in range(size))
        self.length = 0
        self.max_size = size

    def add_item(self, item):
        """
        添加单个item
        :param item:
        :return:
        """
        if self.length < self.max_size:
            self.data[self.length] = item
            self.length += 1
        else:
            raise IndexError("List is full !")

    def create_list(self, tar_list):
        """
        添加一个list到序列表中
        :param tar_list:
        :return:
        """
        for i, item in enumerate(tar_list):
            if self.length >= self.max_size:
                raise IndexError("List is full!")
            else:
                self.add_item(tar_list[i])

    def delete(self, i):
        """
        删除位置为i的节点的值
        :param i:
        :return:
        """
        if i > self.length or i <= 0:
            raise IndexError("Index is out of range")
        else:
            j = i
            while j < self.length:
                self.data[j-1] = self.data[j]
                j += 1
            self.data[self.length - 1] = None
            self.length -= 1

    def get_elem(self, i):
        """
        返回位置为i的节点的值
        :param i:
        :return:
        """
        if i > self.length or i <= 0:
            raise IndexError("Index is out of range")
        else:
            return self.data[i-1]

    def get_location(self, elem):
        """
        返回第一个节点值为elem的位置
        :param elem:
        :return:
        """
        for i, item in enumerate(self.data):
            if item == elem:
                return i+1
        return -1

    def show_list(self):
        """
        输出序列表中所有的元素
        :return:
        """
        for i, item in enumerate(self.data):
            if item is not None:
                print self.data[i],
            else:
                print ''
                break


if __name__ == '__main__':
    sql = SqList(10)
    ll = [1, 2, 3, 4, 5]
    sql.create_list(ll)
    sql.show_list()
    sql.delete(1)
    sql.show_list()
    sql.get_elem(4)
    b = sql.get_location(3)
    print b

文章转载请注明:  Python 数据结构 之 线性表 的链式存储结构


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值