码迷,mamicode.com
首页 > 其他好文 > 详细

链表的声明及操作

时间:2015-06-25 17:15:10      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
#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=p->Next;
    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

 

链表的声明及操作

标签:

原文地址:http://www.cnblogs.com/gabygoole/p/4600273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!