数据结构与算法之链表
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 未完待续~
以上是关于数据结构与算法之链表的主要内容,如果未能解决你的问题,请参考以下文章