
数据结构
文章平均质量分 55
u010765526
这个作者很懒,什么都没留下…
展开
-
创建链表-头插法和尾插法
1,头插法和尾插法 新增节点插入的位置不同,头插法是在头结点之后,尾插法只在链表末尾。 2,代码 #include typedef struct ListNode { int data; struct ListNode *next; }ListNode, *pListNode; void addHead_createList(ListNode **head, int n) //头插原创 2017-06-21 13:48:35 · 532 阅读 · 0 评论 -
剑指offer 13--在O(1)时间内删除链表节点
1,题目: 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除改节点。 2,分析 在O(1)时间内删除某一节点,只需将下一节点的内容复制给该节点,并将该节点指向该节点的下下一节点。(即删除该节点的下一节点,但复制下一点的内容给该节点,并改变该节点的指向)。 但是对于删除的节点需要判断其位置情况: 待删除的节点不是尾节点;待删除的节点是尾节点。 尾节点又分两种原创 2017-06-21 15:33:52 · 204 阅读 · 0 评论 -
剑指offer 15--链表中倒数第n个节点
1,题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始,即链表的尾节点是倒数第一个节点。例如一个链表有6个节点,从第一个节点开始它们的值是1、2、3、4、5、6。这个链表倒数第3个节点是值为4的节点。 2,分析 指定两个指针pbefore和pafter,均指向第一个节点,起先前面的指针pbefore走k步,然后两个指针依次向后走,当pbefore为空时即走到原创 2017-06-22 11:59:21 · 228 阅读 · 0 评论 -
剑指offer 15-反转链表
1,题目 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 2,分析 反转链表进行的其实就是指针指向的操作问题,当前节点指针pNode,将其指向前一个指针pPrev,此时pNode原先指向的下一节点断开,所以还需pNext保存pNode的下一指针。 主要步骤是让pNode指向前一指针pPrev后,后移pPrev和pNode指针,pPrev指向pNode,pNode指原创 2017-06-23 16:45:02 · 220 阅读 · 0 评论