zoukankan      html  css  js  c++  java
  • 线性表总结

    1.代码段1简介:删除链表重复元素

    1.1.代码1

    
    typedef int ElemType; //1
    
    typedef struct LNode   //2
    
    { //3
    
    ElemType data; //4
    
    struct LNode *next; //5
    
    } LNode,*LinkList; //6
    
    void deleteDuplicates(LinkList head) //7
    
    { //8
    
    if(head==NULL||head.next==NULL) //9
    
    return head; //10
    
    LinkList p=head; //11
    
    LinkList q=head->next; //12
    
    while(p->next!=NULL) //13
    
    { //14
    
    if(p->data==q->data) //15
    
    { //16
    
    p->next=q->next; //17
    
    q->next=NULL; //18
    
    q=p->next; //19
    
    continue; //20
    
    } //21
    
    p=q; //22
    
    q=q->next; //23
    
    } //24
    
    return head; //25
    
    } //26
    
    

    1.2.不懂的地方

    第18行,在第18行将q->next赋予NULL。因为在第19行已经将q=p->next,所以不非常清楚这步的目的。目前我认为该步的目的是断开q的next将节点释放。

    2.代码段2简介:单链表排序

    2.1 代码1

    
    void sortList(node *head) //1
    
    { //2
    
    int len = lenList(head); //3
    
    cout << "len:" << len << endl; //4
    
    if (len == 0) //5
    
    return; //6
    
    node *p = head; //7
    
    int i, j, tmp; //8
    
    for (i = 0; i < len - 1; i++){ //9
    
    p = head; //10
    
    for (j = 0; j < len -i -1; j++){ //11
    
    if (p->data > p->next->data){ //12
    
    tmp = p->data; //13
    
    p->data = p->next->data; //14
    
    p->next->data = tmp; } //15
    
    p = p->next;} //16
    
    } //17
    
    } //18
    
    

    2.2 不懂的地方

    第9行至第18行,太久没做排序题,刚开始没看出来是冒泡排序。外层的循环仅进行到len-1为的是与后面的数据进行比较,内层循环后将最值移到序列之后。

  • 相关阅读:
    Java面试题(3)Java new一个对象的过程中发生了什么
    spring boot(九):Spring Boot中Redis的使用
    intellij idea 2018
    springboot(八)自定义Filter、自定义Property
    springboot(六)SpringBoot问题汇总
    Java Web之路(五)JSP
    Java
    instrument(2)
    Instrumentation(1)
    Dubbo中订阅和通知解析
  • 原文地址:https://www.cnblogs.com/yujun59/p/10595449.html
Copyright © 2011-2022 走看看