双其中head指向链表首结点中,如果P指向ai结点,这时P结点位置加S结点呢

题目:比如给定一串字符串翻轉字符串。

方法1:将字符串前后字符交换如果是奇数len,则最中间的字符不变

时间复杂度为:O(N)

slist = list(s) # 将字符串转为列表。因为列表可变芓符串不可变。

方法2:链表将原链表的指向弄反,即原第2个值的指针指向第1个值原第3个值指向第2个值,即可将列表反转

def __init__(self, data, p=0): # 链表节点初始化,一个数据域+指针域数据域是初始化时入参决定的,指针域默认为空 pNext = pNode.next # 首先保存pNode原本指向的下一个节点的值,这样在解除它们指向關系时原下一个节点不会丢失。 # 若pNext = 0, 则说明pNone到达原顺序的最后一个节点即反转后链表的头结点。 pNode.next = pPrev # 将原前面的值的指针位置赋予后面节點,即指向相反 p = pReverseHead # 将头结点赋予 p,再遍历链表不能直接.next,否则头结点会丢失。 data1 = list(s) # 将字符串转为列表因为列表可变,字符串不可变
链表分为单其中head指向链表首结点双其中head指向链表首结点,循环链表双向循环链表
其中常见操作有:创建,增加删除,修改查找,以及单其中head指向链表首结点的逆置

链表是一种常见的数据结构链表的存储元素的个数是不受限定的当要添加更多元素时,存储的个数会随之增加这种方式就昰链表。
链表结点内容分为指针域和数据域链表就是由这样的一个个结点通过指针域指向连接而成。

一、链表的創建分为两种:

另一种是尾插法创建链表 printf("请输入下一个数(输入负数结束输入):"); printf("请输入下一个数(输入负数结束输入):");

八、链表排序(冒泡排序)

双向循环链表是单项循环链表的一种拓展(循环链表与双其中head指向链表首结点的组合)
循环链表即让最后一个结点不指向空,而是指向头结点
双其中head指向链表首结点的指针域为两个指针,一个指向前驱(前一个结点)一个指向后继(后一个结点)
  • 首先定义一个双向循环链表

一、 双向循环链表的创建

二、双向循环链表的增加

三、双向循环链表的删除

四、双向循环链表的遍历

我要回帖

更多关于 其中head指向链表首结点 的文章

 

随机推荐