码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法之链表

时间:2019-09-01 14:26:31      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:空间   span   style   iter   col   数据   创建   访问   rem   

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

数据结构与算法之链表

标签:空间   span   style   iter   col   数据   创建   访问   rem   

原文地址:https://www.cnblogs.com/bo1990/p/11442035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!