zoukankan      html  css  js  c++  java
  • 链表的插入求长度查值操作

    通过对链表的学习发现,对链表不同的操作有不同的赋初始值值

    下面对比学习

    1对链表的值查询

    // 在链表中查找值为key的节点
    Node * Locate(Node *L, ElemType key)
    {
        Node *p = L->next; //从表中第一个节点开始
        while(p != NULL)
        {
            if (p->data != key)
                p = p->next;
            else
                break;
        }
        return p;
    }

    对链表的值查询操作,初始化时 p = L->next

    2求链表的长度

    // 求链表的长度
    int ListLength(Node *L)
    {
        int length = 0;
        Node *p = L->next;
        while(p != NULL)
        {
            length++;
            p = p->next;
        }        
        return length;
    }

    对链表的求长度操作也是初始化,p = L->next

    3对链表的插入值

    // 链表的插入操作
    void * insList(Node *L, int i, ElemType e)
    {
        LinkList pre = L, s;
        int k = 0;
        if(i <= 0)
            return 0;
        while(pre != NULL && k < i-1) //直到pre指向第i-1个元素
        {
            k++;
            pre = pre->next;
        }
        if(!pre)
        {
            printf("insert increct
    ");
            return ERROR;
        }
        s = (Node *)malloc(sizeof(Node));
        s->data = e;
        s->next = pre->next;
        pre->next = s;
    }

    对链表的初始化 pre = L;

    与以上两个操作不同。

    在此,总结一下对链表的操作

    1)查找:在单链表找到第i-1个结点,并由指针pre指示

    2)申请:申请新节点s,将其数据域的值为e  :s->data = e;

    3)插入链表,此操作同尾插法、头插法一致

      先操作待插入结点的后面:s->next = pre->next;

      载操作待插入结点的前面:pre->next = s;

    如下图所示

     

  • 相关阅读:
    Eos开发——构造查询条件
    随记
    Spring的三种通过XML实现DataSource注入方式
    事务处理
    Spring AOP实例——异常处理和记录程序执行时间
    输出日志实例改成用Spring的AOP来实现
    用ProxyFactoryBean创建AOP代理
    Spring的通知(Advice)
    Spring的3种切入点PointCut实现
    学习AOP之JAVA的代理机制
  • 原文地址:https://www.cnblogs.com/hello-lijj/p/6588997.html
Copyright © 2011-2022 走看看