循环链表

循环链表的插入和删除

不羁的心 提交于 2019-11-28 02:11:50
循环链表可以用来使计算机处理内存工作区或输出至数据缓冲区。 循环链表的插入和删除 #include " iostream " #include " stdlib.h " using namespace std; struct clist { int data; struct clist * next; }; typedef struct clist cnode; typedef cnode * clink; /* -----循环链表的输出------ */ void printclist( clink head) { clink ptr; head = head -> next; ptr = head; do { printf( " [%d] " ,ptr -> data); ptr = ptr -> next; } while (head != ptr && head != head -> next); printf( " \n " ); } /* -----循环链表的结点插入---- */ clink insertnode(clink head,clink ptr, int value) { clink new_node; new_node = (clink) malloc( sizeof (cnode)); if ( ! new_node) return NULL; new

单向循环链表

六眼飞鱼酱① 提交于 2019-11-28 01:01:46
单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 操作 is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 insert(pos, item) 在指定位置pos添加节点 remove(item) 删除一个节点 search(item) 查找节点是否存在 实现 class Node ( object ) : """节点""" def __init__ ( self , item ) : self . item = item self . next = None class SinCycLinkedlist ( object ) : """单向循环链表""" def __init__ ( self ) : self . _head = None def is_empty ( self ) : """判断链表是否为空""" return self . _head == None def length ( self ) : """返回链表的长度""" # 如果链表为空,返回长度0 if self . is_empty ( ) : return 0 count = 1 cur = self . _head

深入分析 Linux 内核链表

可紊 提交于 2019-11-27 23:03:30
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。 转自: http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/ 一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。 通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型,下面分别给出这几类常见链表类型的示意图: 1. 单链表 图1 单链表 单链表是最简单的一类链表,它的特点是仅有一个指针域指向后继节点(next),因此,对单链表的遍历只能从头至尾(通常是NULL空指针)顺序进行。 2. 双链表 图2 双链表 通过设计前驱和后继两个指针域,双链表可以从两个方向遍历,这是它区别于单链表的地方。如果打乱前驱、后继的依赖关系,就可以构成"二叉树";如果再让首节点的前驱指向链表尾节点、尾节点的后继指向首节点(如图2中虚线部分)

单向链表、单向循环链表、双向链表(Python)

强颜欢笑 提交于 2019-11-27 05:33:04
链表的定义 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址); 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活; 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 1.单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个 信息域(元素域) 和一个 链接域 。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 表元素域 elem 用来存放具体的数据; 链接域 next 用来存放下一个节点的位置(python中的标识); 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。 2.单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 3.双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 4.链表与顺序表的对比 链表失去了顺序表随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大,但对存储空间的使用要相对灵活。

基于Python单向循环链表实现尾部、任意位置添加,删除

╄→尐↘猪︶ㄣ 提交于 2019-11-27 05:28:22
什么叫单向循环链表。单向循环链表是指在单链表的基础上,表的最后一个元素指向链表头结点,不再是为空。 # coding = utf-8 # 定义节点类 class Node(object): def __init__(self, data): # 定义数据域 self.data = data # 定义指向域 self.next = None # 定义单向循环链表类 class Single_Circle(object): def __init__(self): # 定义链表长度 self._length = 0 # 定义链表头部 self._head = Node(None) # 定义自己指向自己 self._head.next = self._head def is_empty(self): if self._length == 0: print("链表为空") return True else: return False def travel(self): if self.is_empty(): return else: # 定义游标 cur = self._head.next # 循环遍历 for temp in range(self._length): print(cur.data, "--->", end=" ") # 移动游标 cur = cur.next else:

数据结构之单向循环链表----python实现

强颜欢笑 提交于 2019-11-27 05:27:19
单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 操作 is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 insert(pos, item) 在指定位置pos添加节点 remove(item) 删除一个节点 search(item) 查找节点是否存在 实现 class Node(): """节点""" def __init__(self,elem): self.elem=elem self.next=None class Single_CYCLE_LinkList(): """单向循环链表""" def __init__(self,node=None): self._head=node if node: node.next=node def is_empty(self): #链表是否为空 if self._head==None: return True else: return False def length(self): #链表长度 if self.is_empty(): return 0 cur=self._head count=1 while cur.next!=self.

python3实现单向循环链表

ε祈祈猫儿з 提交于 2019-11-27 05:27:01
单向循环链表是单向链表的一个拓展,主要区别在于单向循环链表尾节点的next不再指向None,而是指向链表的头节点。 下面通过代码一步步实现单向循环链表并附上注释和测试,主要实现以下几个基本方法: is_empty() 链表是否为空 length() 链表长度 travel() 遍历整个链表 add(item) 链表头部添加元素 append(item) 链表尾部添加元素 insert(pos, item) 指定位置添加元素 remove(item) 删除从头节点开始的第一个相同的节点 search(item) 查找节点是否存在 首先照例定义节点类对象: class Node(): def __init__(self, item): self.item = item self.next = None 然后开始写单向循环链表(Single Cyclic LInked List)的类: class SCLL(): ###别忘了先定义一个带默认值的头节点!!! def __init__(self, node = None): self.__head = node if self.__head: #这里要注意和无循环链表的区别了 node.next = self.__head #如果头节点不为空,则使尾节点指向头节点 def is_empty(self): return self._

python实现单向循环链表

爱⌒轻易说出口 提交于 2019-11-27 05:26:41
class Node(object): """结点类""" def __init__(self, item): self.item = item self.next = None class CycleSingleLinkList(object): """单向循环链表""" 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指向的尾结点

Python单向循环链表

女生的网名这么多〃 提交于 2019-11-27 05:25:50
Python单向循环链表 class Node : '''节点''' def __init__ ( self , elem = None ) : self . elem = elem self . next = None class SingleCycleLinkList : '''单向循环链表''' def __init__ ( self , node = None ) : self . __head = node if node : node . next = node def is_empty ( self ) : '''链表是否为空''' return self . __head == None def length ( self ) : '''链表长度''' if self . is_empty ( ) : return 0 cur = self . __head # cur 游标,用来移动遍历节点 count = 1 # count 记数 while cur . next != self . __head : count += 1 cur = cur . next return count def travel ( self ) : '''遍历整个链表''' if self . is_empty ( ) : return cur = self . __head

Python实现单向循环链表

雨燕双飞 提交于 2019-11-27 05:23:31
单向循环链表: 单向循环链表相对于单链表,区别在于链表中最后一个节点的next区域不在指向None,而是指向链表的头节点。 常用操作: is_empty() :判断链表是否为空,空则返回True,否则返回False。 length(): 返回链表的长度。 print():遍历链表并打印其中的元素。 add(item):往链表头部添加元素。 append(item):往链表尾部添加元素。 insert(pos, item):往指定位置添加元素。 remove(item):删除指定的某个元素,删除成功则返回该元素,否则返回None。 search(item):查找某个元素是否存在,存在则返回其索引,否则返回-1。 Python代码实现: # -*- coding: utf-8 -*- """ -------------------------------------------------------- # @Version : python3.7 # @Author : wangTongGen # @File : single_cycle_list.py # @Software: PyCharm # @Time : 2019/5/13 11:29 -------------------------------------------------------- """ class