当前位置:首页 » 编程语言 » python链表操作

python链表操作

发布时间: 2022-04-19 16:44:36

python的双向链表

这里有一个:
https://github.com/rgsoda/pypy-llist/

⑵ python用单链表写一个通讯录,包括添加,删除(可恢复),查找等基本功能

///////////list3.c实现链表的插入删除查找
#include
#include
#include
typedef
struct
LNode
//////////定义数据结构体
{
int
num;
char
name[20];
struct
LNode*
next;
}*Link;
///////////定义一个指针类型
typedef
struct
{
Link
head,tail;
int
len;
}LinkList;
LinkList
*gList;
void
MenuInfo();
void
InputData(LinkList
*mList);
void
OutputData(LinkList
*mList);
void
InsertData(LinkList
*mList,int
n);
Link
SearchNode(LinkList
*mList,int
n);
void
DeleteData(LinkList
*mList,int
n);
void
main()
{
int
_choice;
int
_quit=0;
int
n=0;
gList=(LinkList
*)malloc(sizeof(LinkList));
gList->head=gList->tail=NULL;
do
{
MenuInfo();
scanf("%d",&_choice);
switch(_choice)

⑶ python链表__getitem__()问题

应该是误将float当作list或者tuple来操作了
对于list或者元组,[]操作是访问下标所在的元素,也就是__getitem__方法。
由于python定义变量的时候并不说明类型,类型都在运行时确定,因此有出现类型错误的可能性。
至于具体怎么修改,无法从你的问题中得出结论,你可以看出错的调用堆栈,都有对应的文件和行号的。

⑷ python链表:TypeError: add() missing 1 required positional argument: 'item'。这个错误怎么改正

python 2.6用add很正常啊,add看起来没啥问题,到是别的函数有些小问题。


1. remove前判断下这个item是不是存在

2.if curNode is head : 应该是 if curNode is self._head

3._BagIterator(self._head) 是个什么东西? 自己写了一个

4. 下划线最好不要加,除非你知道它是用来干什么的.

5.a = linkNode() 而不是 a = linkNode

class linkNode:
def __init__(self):
self._head = None
self._size = 0
def __len__(self):
return self._size
def __contains__(self,target):
curNode = self._head
while curNode is not None and curNode.item != target:
curNode = curNode.next
return curNode is not None
def add( self, item ):
newNode = BagListNode( item )
newNode.next = self._head
self._head = newNode
self._size += 1
def remove(self, item):
preNode = None
curNode = self._head
if not item in self:
print item," is not exist."
return None
while curNode is not None and curNode.item != item:
preNode = curNode
curNode = curNode.next
self._size -= 1
if curNode is self._head :
self._head = curNode.next
else:
preNode.next = curNode.next
def __iter__(self):
curNode = self._head
while True:
yield curNode
if curNode.next is not None:
curNode = curNode.next
else:
break
class BagListNode( object ):
def __init__( self, item ):
self.item = item
self.next = None

⑸ python 单向链表问题

不会。
实际上,SingleLinkedList只存储了链表的表头节点的位置。
每次调用add函数,相当于新建了一个节点,
调用setNext将其下一节点指向现在链表的表头,
然后将新建的节点位置作为新的表头位置保存在链表里面。
要得到链表的所有节点必须从表头节点开始一个一个往下跳转,一直跳转到下一节点位置为None,则表示查询完毕。

⑹ python编程中实现linkedlist(链表)报错是因为什么,怎么解决

楼主你好!

看你的代码存在很多问题,一个个来说明

1)首先你代码的报错源于你想用list来展开你的SLinkedList类,在python中,除非内置的可迭代对象外,其他都需要实现__iter__()函数,才能用list来进行展开。注意:判断一个对象是否可迭代,请使用isinstance(obj, Iterable)来判断obj是不是可以迭代,Iterable需要从collections中导入

2)插入的方法存在严重问题,按楼主的方法插入的话,因为头节点始终在变,所以当你需要遍历链表的时候就会找不到头节点;

3)pop的方法实现也有问题,因为是单向链,所以无法从末节点开始删除,只能删除头节点

4)top方法的意图未知

其他:

下面列举了一下我修改后的方案,做了一些锦上添花的操作,每个基本操作都会返回链表对象,这样就可以使用链式操作来写代码;迭代函数使用yield来实现,避免展开时占用不必要的内存。

另:我的展开时直接取链表中各个节点的元素,加了一些关键注释在代码中;

#-*-coding:utf-8-*-
classNode:
def__init__(self):
'''
elm:节点元素
nxt:下个节点指针
'''
self.elm,self.nxt=None,None

classSLinkedList:
def__init__(self):
'''
head:链表头
end_point:链表尾
'''
self.head=None
self.end_point=None

defpush(self,x):
p=Node()
p.elm=x
ifself.headisNone:
self.head=p
self.end_point=p
returnself
self.end_point.nxt=p
self.end_point=p
returnself

defpop(self):
'''因为实现的是一个单链表,所以只能从头开始删除节点'''
ifself.head.nxtisNone:
return
self.head=self.head.nxt
returnself

def__iter__(self):
temp_node=self.head
whiletemp_nodeisnotNone:
yieldtemp_node.elm
temp_node=temp_node.nxt


if__name__=='__main__':
'''增加1,2,5三个元素,并删除一个头节点'''
mylinklist=SLinkedList().push(1).push(2).push(5).pop()
print(list(mylinklist))


其实python这个语言使用链表有些画蛇添足,但是如果拿来当作需求练手也无妨。

望采纳,谢谢!

⑺ 关于python链表的运行

看你运行几次,我给你一条一条说

头 1->2->3->4->5->6->7->8->9 NONE

pointer=head #这里你没说清,我先假设这个head是链表的第一个,1
newnode={ } #空字典
newnode['data']=20 #添加关键字data=20进字典。
newnode['next']=pointer #字典的next目标指向pointer,也就是head,也就是1,但是是链表这个object,不是指向一个数字
head=newnode #重新定义head为newnode这个字典。head指向{‘data’:20, ‘next’:pointer}这个字典。
pointer=pointer['next'] #pointer指向pointer['next'],也就是pointer现在指向链表的第二个,2
pointer['next']=none #pointer['next']设为none,也就是现在pointer这个链表就被截断了。只包含1->2->none

⑻ python中的链表(linked list)

凤鸾宝帐景非常,尽是泥金巧样妆。
曲曲远山飞翠色,翩翩舞袖映霞裳。
梨花带雨争娇艳,芍药笼烟骋媚妆。
但得妖娆能举动,取回长乐侍君王。

// 这题需要使用辗转相除法,又名欧几里德算法(Euclideanalgorithm)
#include <stdio.h>

int main (void)
{
int m, n, p, tmp;

printf ("Please type in two number:\n");
scanf ("%i %i", &m, &n); //输入两个数,分别放入m, n
p=m*n; //先把两数的积算出来,后面m和n的值会有变

while (n!=0){
tmp=m%n;
m=n;
n=tmp; //这段是求最大公约数的算法
}

printf ("The GCD is %i\n", m); //上面的算法n=0时m这时的值就是最大公约数
printf ("The LCM is %i\n", p/m);//两数的积除以最大公约数就是最小公倍数了

return 0;
}

⑼ 如何使用python建立链表

classListNode:
def__init__(self,x):
self.val=x
self.next=None


l1=newListNode(0)
l1.next=newListNode(1)

⑽ python中如何用链表实现队列

python中的队列是列表吗?
如果有问题, 希望能一起研究一下?
看下网名吧, 楼主

热点内容
c语言相反数 发布:2025-01-23 22:28:55 浏览:186
压缩网课 发布:2025-01-23 22:13:19 浏览:596
网站收录源码 发布:2025-01-23 22:04:42 浏览:692
用c语言制作 发布:2025-01-23 21:49:09 浏览:950
怎么删除开机密码电脑 发布:2025-01-23 21:47:24 浏览:890
php配置伪静态 发布:2025-01-23 21:31:46 浏览:763
mud源码下载 发布:2025-01-23 21:19:46 浏览:136
反恐精英15游戏服务器ip 发布:2025-01-23 21:13:38 浏览:852
起床的战争玩什么服务器 发布:2025-01-23 21:03:06 浏览:145
企业级安卓手机防毒软件哪个好 发布:2025-01-23 20:59:28 浏览:243