多语言展示
当前在线:369今日阅读:168今日分享:49

如何将链表赋值

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,那么该如果给链表赋值呢?
方法/步骤
1

链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,赋值方法有很多种

2

为方便说明,这里以一个复杂链表作为前提,其中每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中任意一个节点,另外仅做解法的简单说明

3

解法一:时间复杂度为O(N2)的算法,将整个复制过程分为两步:第一步复制原始链表上的每一个节点,并用m_pNext链接起来;第二步是设置m_pSibling指针,此解法时间主要花费在定位结点的m_pSibling上

4

解法二:空间换时间的解法,第一步仍然是复制原始链表上的每一个节点,并用m_pNext链接起来,同时把的配对信息放到一个哈希表中;第二步还是设置m_pSibling指针

5

解法三:无需辅助空间,时间复杂度为O(N)的解法,第一步仍然根据原始链表中的每个结点N创建对应的节点N',同时把N'链接在N的后面;第二步设置复制出来的结点的m_pSibling指针

6

第三步把这个长链表拆分成两个链表:将奇数位置的结点链接起来就是原始链表,将偶数位置的结点链接起来就是复制的链表,最后将以上三步合起来

推荐信息