数据结构与算法之链表

Posted bo1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法之链表相关的知识,希望对你有一定的参考价值。

链表的结构简单,它由指针把若干个结点连接成链状结构。它是一种动态结构,因为在创建链表时无须知道链表长度。插入一个结点时只需要为新结点分配内存,然后调整指针的指向即可。如果链表的头指针会有更改,那么参数应该设为指向指针的指针,即ListNode **pHead。

struct ListNode

     int m_nKey;
     ListNode *m_pNext;
;
  • 优点:空间效率高,因为是每添加一个结点才分配一次内存,所以没有闲置的内存。插入和删除效率高O(1);
  • 缺点:时间效率低,即查找效率低O(n);

1 链表元素的删除

题目:在链表中找到第一个含有某值的结点并删除该结点;

  • void RemoveNode(ListNode **pHead, int value);

解题思路:

(1)若头结点的值 = value,则删除头结点,更改头指针指向头结点的下一个结点

(2)依次遍历,找到要被删除结点的上一个结点,调整指针的指向;

2 从尾到头打印链表(剑指offer---面试题5)

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值;

  • void PrintListReversingly_Iteratively(ListNode *pHead);
  • void PrintListReversingly_Recursively(ListNode *pHead);

解题思路:

(1)迭代法:用栈作辅助空间;

(2)递归法:每次访问结点的时候,先递归输出它后面的结点,再输出该结点本身;

3 未完待续~

以上是关于数据结构与算法之链表的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法之链表

数据结构与算法之链表

JAVA数据结构与算法之链表

java数据结构与算法之链表找环入口

02_数据结构与算法之链表

02_数据结构与算法之链表