首页 > 其他 > 详细

线性表总结

时间:2019-03-25 23:17:24      阅读:151      评论:0      收藏:0      [点我收藏+]

尝试找出两段自己不懂得的基础代码以Markdown形式发表一篇博客。格式如下:

1. 代码段1简介:代码功能:把单链表L分成两个单链表L1和L2。

1.1. 代码1

void split(LinkNode *&L,LinkNode *&L!,LinkNode *&L2)  //1
  {
    LinkNode *p=L->next,*q,*r1;                                       //2
    L1=L;                                                                         //3
    r1=L1;                                                                        //4
    L2=(LinkNode *)malloc(sizeof(LInkNode))                  //5
    L2->next=NULL;                                                         //6
    while(p!=NULL)                                                          //7
    {
         r1->next=p;                                                           //8
         r1=p;                                                                     //9
         p=p->next;
         q=p->next;                                                            //10
         p->next=L2->next;                                                //11
         L2->next=p;                                                          //12
         p=q;                                                                      //13
     }
     r1->next=NULL;                                                         //14
  }

2. 不懂得地方

从//3到//9不懂,是功能不懂。代码应该是先将L1指向L的头节点,r1指向L1的尾节点(不知道为什么r1会指向L1的尾节点),为L2申请空间,使L2的下一个节点为空,但p不为空时,使p指向r1的下一个节点,为什么又要使p指向r1.

2. 代码段1简介:代码功能:运用双链表中实现元素递增顺序。

2.1 代码1

void sort(DLinkNode *&L)                                                   //1
{
    DLinkNode *p,*pre,*q;                                                      //2
    p=L->next->next;                                                              //3
    L->next->next=NULL;                                                       //4
    while(p!=NULL);                                                               //5
    q=p->next;                                                                       //6
    pre=L;                                                                             //7
    while(pre->next!=NULL&&pre->next->data<p->data);     //8
            pre=pre->next;                                                        //9
    p->next=pre->next;                                                         //10
    if(pre->next!=NULL)                                                        //11
           pre->next->prior=p;                                                 //12
    pre->next=p;                                                                  //13
    p->prior=pre;                                                                 //14
    p=q;                                                                               //15
}  

2.2 自己不懂得地方

不懂//8,pre->next->data和p->data是指向L的同一个位置里的数据,怎么比较大小。

线性表总结

原文:https://www.cnblogs.com/jiangyu-/p/10596442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!