Python - 链表问题和相关性

我正在客户端/服务器上进行简单的聊天。客户端在 VB 中,服务器在 python 中。

我想让我的服务器存储我的消息,虽然我最聪明的是建立一个链表(我是 python 的新手,但在 C# 中更高级)。

我尝试存储的内容包括:

  • 收件人(此处称为 dest)

  • 消息(称为 msg)

我不知道有多少,如果我有新消息给已经存储了消息的人,我会覆盖

我在课堂上试过

class tabmessage:

    def __init__(self, dest=None,msg=None, next=None): 

        self.dest = dest

        self.msg = msg

        self.next = None

那作为电话


#I create the top of the chain on the beginning

messages = tabmessage(dest='Control',msg='Message Integrity')

...然后在一个函数中


#Setting the top of the chain

(d,m,s) = (messages.dest,messages.msg,messages.next)

#Looking for a similar dest in chain and getting at the end at the same time

while True:

        if (d == tempdest):

            m = (tempmsg+".")[:-1]

            print("Overwrite of msg for" + d + " : " + m);

            return

        if (s is None):

            break

        (d,m,s)=(s.dest,s.msg,s.next)

#If I did not found it i try to add it to the chain

s = tabmessage(dest=(tempdest+".")[:-1],msg=(tempmsg+".")[:-1])

print("Trying to add : " + s.dest + " : " + s. msg)

最后一个打印看起来没问题:


尝试添加:用户:这是我的消息


但如果我这样做:


print("Trying to add : " + messages.next.dest + " : " + messages.next. msg)

发生错误(NoneType 没有 dest 元素...),因此顶部仍然是单独的。


或者也许在 python 中有更聪明的方法来做到这一点?


凤凰求蛊
浏览 130回答 2
2回答

POPMUISE

我试图在更高的节点上进行操作,并且它有效。我现在有 :#Setting the top of the chaincunode = messages#Looking for a similar dest in chain and getting at the end at the same timewhile True:    if (cunode.dest == tempdest):        cunode.msg = (tempmsg+".")[:-1]        print("Overwrite of msg for" + cunode.dest + " : " + cunode.msg);        return    if (cunode.next is None):        break    cunode = cunode.next#If I did not found it i try to add it to the chaincunode.next = tabmessage(dest=(tempdest+".")[:-1],msg=(tempmsg+".")[:-1])对我来说看起来完全一样......

交互式爱情

如果我正确理解你的功能,你就会找到你想要的节点if (d == tempdest):然后你正在写你的信息并返回。因为您返回,所以将 s 分配给新节点的底部语句永远不会运行。我认为你想在那里打破。我不确定这是您唯一的问题,但我认为这就是您的列表没有获得额外节点的原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python