python 实现无序列表
- # -*- coding:utf-8 -*-
- class Node:
- def __init__(self, initdata):
- self.data = initdata
- self.next = None
- def getData(self):
- return self.data
- def getNext(self):
- return self.next
- def setData(self, newdata):
- self.data = newdata
- def setNext(self, newnext):
- self.next = newnext
- class UnorderedList:
- def __init__(self):
- self.head = None
- def isEmpty(self):
- return self.head == None
- def add(self, item):
- temp = Node(item)
- temp.setNext(self.head)
- self.head = temp
- def size(self):
- current = self.head
- count = 0
- while current != None:
- count = count + 1
- current = current.getNext()
- return count
- def travel(self):
- current = self.head
- while current != None:
- print current.getData()
- current = current.getNext()
- def search(self, item):
- current = self.head
- found = False
- while current != None and not found:
- if current.getData() == item:
- found = True
- else:
- current = current.getNext()
- return found
- def remove(self, item):
- current = self.head
- previous = None
- found = False
- while not found:
- if current.getData() == item:
- found = True
- else:
- previous = current
- current = current.getNext()
- if previous == None:
- self.head = current.getNext()
- else:
- previous.setNext(current.getNext())
- def append(self, item):
- temp = Node(item)
- if self.isEmpty():
- self.head = temp
- else:
- current = self.head
- while current.getNext() != None:
- current = current.getNext()
- current.setNext(temp)
- def index(self, item):
- current = self.head
- count = 0
- found = False
- while current != None and not found:
- count += 1
- if current.getData() == item:
- found = True
- else:
- current = current.getNext()
- if found:
- return count
- else:
- raise ValueError, '%s is not in this unorderedList' %item
- def insert(self, pos, item):
- if pos <= 1:
- self.add(item)
- elif pos > self.size():
- self.append(item)
- else:
- temp = Node(item)
- count = 1
- previous = None
- current = self.head
- while count < pos:
- count += 1
- previous = current
- current = current.getNext()
- previous.setNext(temp)
- temp.setNext(current)
- if __name__ == '__main__':
- t = UnorderedList()
- for i in range(10):
- t.append(i)
- print t.size()
- t.travel()
- print t.search(5)
- print t.index(3)
- t.remove(8)
- t.travel()
- t.insert(2, 12)
- t.travel()
python 实现无序列表的更多相关文章
- python实现无序列表:链表
介绍链表前我们先了解下什么是列表. 在对基本数据结构的讨论中,我们使用 Python 列表来实现所呈现的抽象数据类型.列表是一个强大但简单的收集机制,为程序员提供了各种各样的操作.然而,不是所有的编程 ...
- Python实践练习:在 Wiki 标记中添加无序列表
题目描述 项目:在 Wiki 标记中添加无序列表 在编辑一篇维基百科的文章时,你可以创建一个无序列表,即让每个列表项占据一行,并在前面放置一个星号.但是假设你有一个非常大的列表,希望添加前面的星号.你 ...
- Python中将字典转换为有序列表、无序列表的方法
说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列表 key_value = list(a.keys()) ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
- 在 Wiki 标记中添加无序列表
项目:在 Wiki 标记中添加无序列表在编辑一篇维基百科的文章时,你可以创建一个无序列表,即让每个列表项占据一行,并在前面放置一个星号.但是假设你有一个非常大的列表,希望添加前面的星号.你可以在每一行 ...
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- Python基本数据类型--列表、元组、字典、集合
一.Python基本数据类型--列表(List) 1.定义:[ ]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素. 2.列表的创建: # 方式一 list1 = ['name','ag ...
- python 迭代 及列表生成式
什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过 for ...
- Python 学习笔记(1)Python容器:列表、元组、字典与集合
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...
随机推荐
- 设计模式——工厂方法(Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. ——DP UML类图 模式说明 抽象业务基类 实际业务类的公共基类,也是工厂要创建的所有对象的父类,这部分 ...
- Tkinter的l组件常用属性
Label常用属性 序号 属性 说明 1 anchor 指示文字会被放在控件的什么位置, 可选项有 N, NE, E, SE, S, SW, W, NW, CENTER. 默认为 CENTER. ...
- js获取文件MD5值
原文链接:http://www.jianshu.com/p/940a9226fbbd 要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5, ...
- strcpy、strncpy、strlen、memcpy、memset、strcat、strncat、strcmp、strncmp,strchr
1.strcpy #include<stdio.h> #include<assert.h> char *mystrcpy(char *dest, const char *src ...
- win10的一些设置
win10进入安全模式: 左下角->设置->更新和安全->恢复->立即重启 (重启后进入的界面可以进行一些设置来进入安全模式) win10切换账户: 任务管理器->账户
- HDU 5908 Abelian Period 可以直接用multiset
http://acm.hdu.edu.cn/showproblem.php?pid=5908 要求把数组分成k组使得每组中的元素出现次数相同 就是分成k个集合,那么直接用multiset判定就可以 有 ...
- Java多线程与并发——线程生命周期和线程池
线程生命周期: 线程池:是预先创建线程的一种技术.线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中,然后对这些资源进行复用.减少频繁的创建和销毁对象. java里面线程池的顶级接口是E ...
- nginx去掉url中的index.php
使用情境:我想输入www.abc.com/a/1后,实际上是跳转到www.abc.com/index.php/a/1 配置Nginx.conf在你的虚拟主机下添加: location / { ...
- CentOS7.5搭建Hadoop分布式集群
材料:3台虚拟主机,ip分别为: 192.168.1.201 192.168.1.202 192.168.1.203 1.配置主机名称 三个ip与主机名称分别对应关系如下: 192.168.1.201 ...
- 一个关于laravel部署的讲座
https://pusher.com/sessions/meetup/laravel-nigeria/deploying-your-laravel-application