老是出现 a=create1(n)
NameError: name 'create1' is not defined
到底是怎么回事
import time
class LinkNode: # 单链表结点类
def __init__(self, data=None): # 构造函数
self.size = None
self.data = data
self.next = None
self.head = LinkNode()
self.head.next = None
def create1(self, a): # 建立顺序表
a = []
for i in range(0, len(a)):
self.data[self.size] = a[i]
def Append(self, item): # 插入元素item在表尾
self.data.append(item)
def create2(self, n): # 尾插法建立单链表
h = LinkNode()
t = self.head
for i in range(0, len(n)):
s = LinkNode(n[i])
t.next = s
t = s
t.next = None
def reverse1(a): # 求顺序表逆置的时间
t1 = time.time() # 获取开始时间
i, j = 0, len(a) - 1
while i < j:
a[i], a[j] = a[j], a[i]
i, j = i + 1, j - 1
t2 = time.time() # 获取结束时间
return t2 - t1
def reverse2(self, h): # 求单链表表逆置的时间
t1 = time.time() # 获取开始时间
if h is None or h.next is None:
return
c = h.next.next
h.next.next = None
while c is not None:
p = c.next
c.next = h.next
h.next = c
c = p
t2 = time.time() # 获取结束时间
return t2 - t1
from LinkNode import LinkNode
if __name__ == '__main__':
n=10000000 #主程序
a=create1(n)
h=create2(n)
print()
print(" 求解结果")
print(" 顺序表逆置时间: %.2f" %(reverse1(a)))
print(" 单链表逆置时间: %.2f" %(reverse2(h)))
print()
参考GPT和自己的思路:在主程序中,你调用了函数create1
和create2
,但是这两个函数并没有在主程序所在的文件中定义,因此在运行程序时会出现NameError: name 'create1' is not defined
的错误。你需要将create1
和create2
函数的定义代码放在与主程序同一个文件中,或者在主程序中导入包含create1
和create2
函数定义的模块。另外,create1
函数似乎并没有按照预期的功能来实现,可能需要检查是否有问题。
你的代码错误的地方挺多的,要解决当前这个问题,你要先实例化一个LinkNode类的对象,然后用对象调用类方法create1
如:
linknode = LinkNode(n)
a = linknode.create1()
h = linknode.create2()
感觉你的代码是从哪里参考的,你再检查检查把。