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

来源:互联网 发布:苹果电脑降价规律知乎 编辑:程序博客网 时间:2024/05/21 17:25

用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 ''                breakif __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 0
原创粉丝点击