【python学习】单向循环链表的python语法实现
之前的学习中都是用C语言编写的链表实现,今天小编将带大家一起来学习用python编写单向循环链表。
链表
链表(Linked list)是一种常见的基础数据结构,是⼀种线性表,但是不像顺序表一样连续存储数据,是在每个节点(数据存储单元)存放下一个节点的位置信息(即地址)。
Python
单向循环链表
单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。
语法实现:
class Node(object): """结点类""" def __init__(self, item): self.item = item self.next = None class CyclesSingleLinkList(): """单向循环链表""" def __init__(self, node=None): self.__head = node def is_empty(self): """链表是否为空 :return 如果链表为空 返回真 """ return self.__head is None def length(self): """链表长度""" # 如果是空链表 if self.is_empty(): return 0 cur = self.__head count = 1 while cur.next != self.__head: count += 1 cur = cur.next return count def travel(self): """遍历整个链表""" if self.is_empty(): print("") return cur = self.__head while cur.next != self.__head: print(cur.item, end=" ") cur = cur.next # 从循环退出,cur指向的是尾结点 print(cur.item) def add(self, item): """链表头部添加元素 :param item: 要保存的具体数据 """ node = Node(item) if self.is_empty(): self.__head = node node.next = node # 寻找尾结点 cur = self.__head while cur.next != self.__head: cur = cur.next # 从循环中退出,cur指向尾结点 node.next = self.__head self.__head = node cur.next = self.__head def append(self, item): """链表尾部添加元素""" node = Node(item) #如果列表为空,直接添加结点 if self.is_empty(): self.__head = node node.next = node else: cur = self.__head while cur.next != self.__head: cur = cur.next #退出循环的时候,cur指向尾结点 cur.next = node node.next = self.__head def insert(self, pos, item): """指定位置添加元素""" # 在头部添加元素 if pos <= 0: self.add(item) # 在尾部添加元素 elif pos >= self.length(): self.append(item) else: cur = self.__head count = 0 while count < (pos - 1): count += 1 cur = cur.next # 退出循环的时候,cur指向pos前一个位置 # node插入到pos位置前 node = Node(item) node.next = cur.next cur.next = node def remove(self,item): """删除结点""" if self.is_empty(): return # 当前游标 cur = self.__head # 当前游标的上一个游标 pre = None while cur.next != self.__head: # 找到了要删除的元素 if cur.item == item: # 在头部找到了元素 if cur == self.__head: # 先找到尾结点 rear = self.__head while rear.next != self.__head: rear = rear.next # 退出循环后,rear指向尾结点 self.__head = cur.next rear.next = self.__head else: # 在中间位置找到了元素 pre.next = cur.next return # 不是要找的元素,移动游标 pre = cur cur = cur.next # 退出循环后,cur指向尾结点 if cur.item == item: # 链表只有一个节点 if cur == self.__head: self.__head = None else: pre.next = self.__head def search(self,item): """查找结点是否存在""" if self.is_empty(): return False cur = self.__head while cur.next != self.__head: if cur.item == item: return True cur = cur.next # 退出循环后,cur指向为尾结点 if cur.item == item: return True return False if __name__ == '__main__': ll = CyclesSingleLinkList() print(ll.length()) ll.travel() ll.append(1) print(ll.length()) #1 ll.travel() #1 ll.add(2) print(ll.length()) #2 ll.travel()#2 1 ll.insert(1,3) ll.travel() #2 3 1 ll.remove(1) ll.travel() #2 3
【课程推荐:Python视频教程】
Atas ialah kandungan terperinci 【python学习】单向循环链表的python语法实现. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kelajuan XML mudah alih ke PDF bergantung kepada faktor -faktor berikut: kerumitan struktur XML. Kaedah Penukaran Konfigurasi Perkakasan Mudah Alih (Perpustakaan, Algoritma) Kaedah Pengoptimuman Kualiti Kod (Pilih perpustakaan yang cekap, mengoptimumkan algoritma, data cache, dan menggunakan pelbagai threading). Secara keseluruhannya, tidak ada jawapan mutlak dan ia perlu dioptimumkan mengikut keadaan tertentu.

Tidak mustahil untuk menyelesaikan penukaran XML ke PDF secara langsung di telefon anda dengan satu aplikasi. Ia perlu menggunakan perkhidmatan awan, yang boleh dicapai melalui dua langkah: 1. Tukar XML ke PDF di awan, 2. Akses atau muat turun fail PDF yang ditukar pada telefon bimbit.

Tiada fungsi jumlah terbina dalam dalam bahasa C, jadi ia perlu ditulis sendiri. Jumlah boleh dicapai dengan melintasi unsur -unsur array dan terkumpul: Versi gelung: SUM dikira menggunakan panjang gelung dan panjang. Versi Pointer: Gunakan petunjuk untuk menunjuk kepada unsur-unsur array, dan penjumlahan yang cekap dicapai melalui penunjuk diri sendiri. Secara dinamik memperuntukkan versi Array: Perlawanan secara dinamik dan uruskan memori sendiri, memastikan memori yang diperuntukkan dibebaskan untuk mengelakkan kebocoran ingatan.

Tiada aplikasi yang boleh menukar semua fail XML ke dalam PDF kerana struktur XML adalah fleksibel dan pelbagai. Inti XML ke PDF adalah untuk menukar struktur data ke dalam susun atur halaman, yang memerlukan parsing XML dan menjana PDF. Kaedah umum termasuk parsing XML menggunakan perpustakaan python seperti ElementTree dan menjana PDF menggunakan perpustakaan ReportLab. Untuk XML yang kompleks, mungkin perlu menggunakan struktur transformasi XSLT. Apabila mengoptimumkan prestasi, pertimbangkan untuk menggunakan multithreaded atau multiprocesses dan pilih perpustakaan yang sesuai.

Alat pemformatan XML boleh menaip kod mengikut peraturan untuk meningkatkan kebolehbacaan dan pemahaman. Apabila memilih alat, perhatikan keupayaan penyesuaian, pengendalian keadaan khas, prestasi dan kemudahan penggunaan. Jenis alat yang biasa digunakan termasuk alat dalam talian, pemalam IDE, dan alat baris arahan.

Ia tidak mudah untuk menukar XML ke PDF secara langsung pada telefon anda, tetapi ia boleh dicapai dengan bantuan perkhidmatan awan. Adalah disyorkan untuk menggunakan aplikasi mudah alih ringan untuk memuat naik fail XML dan menerima PDF yang dihasilkan, dan menukarnya dengan API awan. API awan menggunakan perkhidmatan pengkomputeran tanpa pelayan, dan memilih platform yang betul adalah penting. Kerumitan, pengendalian kesilapan, keselamatan, dan strategi pengoptimuman perlu dipertimbangkan ketika mengendalikan penjanaan XML dan penjanaan PDF. Seluruh proses memerlukan aplikasi front-end dan API back-end untuk bekerjasama, dan ia memerlukan pemahaman tentang pelbagai teknologi.

XML boleh ditukar kepada imej dengan menggunakan perpustakaan penukar XSLT atau imej. XSLT Converter: Gunakan pemproses XSLT dan stylesheet untuk menukar XML ke imej. Perpustakaan Imej: Gunakan perpustakaan seperti PIL atau ImageMagick untuk membuat imej dari data XML, seperti bentuk lukisan dan teks.

Gunakan kebanyakan editor teks untuk membuka fail XML; Jika anda memerlukan paparan pokok yang lebih intuitif, anda boleh menggunakan editor XML, seperti editor XML oksigen atau XMLSPY; Jika anda memproses data XML dalam program, anda perlu menggunakan bahasa pengaturcaraan (seperti Python) dan perpustakaan XML (seperti XML.Etree.ElementTree) untuk menghuraikan.
