zoukankan      html  css  js  c++  java
  • DS-5-单链表的两种查找实现

    按位查找:

    依次循环找到第i-1个结点在上一篇按位插入元素的部分已经写过了,这里也是一样的,只不过把i-1改成了i

    //按位查找,返回第i个元素(带头结点)
    LNode * GetElem(LinkList L, int i) {
        if (i < 0)
            return NULL;
    
        LNode *p;        //p指向当前扫描到的结点
        int j = 0;        //当前p指向的是第几个结点
        p = L;            //L指向头结点,第0个结点
        while (p != NULL && j < i) {    //循环找到第i个结点
            p = p->next;
            j++;
        }
    
        return p;
    }
    //如果i值不合法则返回的值为NULL

    那么现在之前的插入元素的代码查找第i-1个部分即可调用这个查找函数:

    //在第i个位置插入元素e
    bool ListInsert(LinkList &L, int i, char e) {
      
    if (i < 1) return false;
       LNode
    *p = GetElem(L, i-1);

       return InsertNextNode(p,e);
     }

    按值查找:

    //按值查找,找到数据域==e的结点
    LNode *LocateElem(LinkList L, char e) {
        LNode *p = L->next; 
        while (p != NULL && p->data != e)//从第1个结点开始查找数据域为e的结点 
            p=p->next; 
        return  p;   //找到后返回该结点指针,否则返回NULL 
    }

    求表的长度:

    //求表的长度
    int Length(LinkList L) {
        int len = 0;    //统计表长
        LNode *p = L;
        while (p->next != NULL) {
            p = p->next;
            len++;
        }
        return len;
    }
  • 相关阅读:
    Convolution1D与Convolution2D区别
    git
    cast函数
    Ubuntu14.04编译WebRTC For Android代码 2014-07-24
    R语言基础-数组和列表
    疯狂的创业运动
    Autodesk 举办的 Revit 2015 二次开发速成( 1.5 天),教室培训, 地点武汉
    注冊(十一)重注冊带有鉴权信息
    ubuntu14.04无法安装Curl
    Bash脚本中的操作符
  • 原文地址:https://www.cnblogs.com/swefii/p/13148676.html
Copyright © 2011-2022 走看看