链表
SavantStart
这个作者很懒,什么都没留下…
展开
-
百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
问题: 一个单链表,长度未知,如何快速的找出位于中间的那个元素? 设置两个指针,p1,p2, 开始p1,p2均位于链接的头部。 p1 每次步进两步, p2 每次步进一步 当p1到达链表的末尾时,p2所在的位置就是链表的中间元素 时间复杂度为O(n) 详细情况请见代码: [cpp] view plaincopy转载 2015-03-31 20:47:32 · 1404 阅读 · 0 评论 -
深入单链表的快速排序详解
单链表的快排序和数组的快排序基本思想相同,同样是基于划分,但是又有很大的不同:单链表不支持基于下标的访问。故书中把待排序的链表拆分为2个子链表。为了简单起见,选择链表的第一个节点作为基准,然后进行比较,比基准小得节点放入左面的子链表,比基准大的放入右边的子链表。在对待排序链表扫描一遍之后,左边子链表的节点值都小于基准的值,右边子链表的值都大于基准的值,然后把基准插入到链表中,并作为连接两个子链表的桥转载 2015-03-31 20:15:25 · 360 阅读 · 0 评论 -
链表合并
已知连个链表la和lb的元素按值非递减有序排列,归并La和Lb得到新的单线性表且非递减有序排序。void mergeList(LinkList &La,LinkList &Lb,LinkList &Lc) { pa = pa->next; pb = pb->next; lc = pc = la; while(pa!=null && pb != null) {原创 2015-04-01 15:44:55 · 354 阅读 · 0 评论 -
删除链表节点
#include //有头结点的情况 typedef struct Node{ int data; struct Node* next; }; //尾插 void create(struct Node* head){ //p是工作指针 struct Node* p = head; int i;原创 2015-03-26 17:10:07 · 405 阅读 · 0 评论