zoukankan      html  css  js  c++  java
  • 链表的声明及操作

    View Code

    以上使用数组做的

    以下使用链表

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct Node *PtrToNode
    typedef PtrToNode List
    typedef PtrToNode Position
    
    struct Node{
        ElementType Element;
        Position Next;
    };
    
    /*测试链表是否为空*/
    int
    IsEmpty(List L)
    {
        return L->Next == Null;
    }
    /*测试是否是链表结尾的函数*/
    int
    IsLast(Position p,List L)
    {
        return p->Next == Null;
    }
    /*Find例程*/
    /*find position of X,Null if not found*/
    Position
    Find(ElementTYpe X,List L)
    {
        Position p;
        p=L->Next;
        while(p != NULL && p->Element != X)
            p=p->Next;
        return p;
    }
    /*FindPrevious assume header node*/
    Position
    FindPrevious(List L,X)
    {
        Position p;
        p=L;
        while(p->Next != NULL && p->Next->Element != X)//总是先判断p指向的当前结点的Next为不为NULL,如果不为NUll
            p=p->Next;                                  //当前次就去找他的下一个结点的Element值是否等于X
        return p;//返回的p如果指向最后一个标元,那就是没找到
    }
    /*链表的删除例程*/
    /*delete first occurence of X*/
    /*assume header node use*/
    void
    Delete(List L,ElementType Element)
    {
        Position p,TmpCell;
        p=FindPrevious(L,X);
        if(!IsLast(p,L))
        {
            /*如果不用TmpCell需要删除的这个内存块,地址丢失
            p->Next=p->Next->Next;
            free()
            */
            TmpCell=p->Next;
            p->Next=TmpCell->Next;
            free(TmpCell);
        }
    }
    /*链表的插入例程*/
    /*insert X after p*/
    void
    Insert(List L,ElementType X,Position p)
    {
        Position TmpCell;
        TmpCell=(struct Node *)malloc(sizeof(struct Node));
        TmpCell->Element=X;
        TmpCell->Next=p->Next;//先让TepCell指向后面,在让p->Next指向TmpCell,不然会丢失后面的地址
        p->Next=TmpCell;
    }
    View Code

     无论Find还是FindPrevious都是返回的指向结点的指针

  • 相关阅读:
    杭电ACM 2052 Picture
    杭电ACM求平均成绩
    杭电ACM水仙花数
    cigarettes
    分数加减法
    推荐几个sql server牛人的博客
    npm 介绍
    centos Flash Player插件的安装
    node.js学习(1)
    查询功能:yum [list|info|search|provides|whatprovides] 参数
  • 原文地址:https://www.cnblogs.com/gabygoole/p/4600273.html
Copyright © 2011-2022 走看看