链表的基本实现例程

#ifndef _List_H


struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;// why is it
typedef PtrToNode Position;


List MakeEmpty( List L );
int Islast( Position P, List L );
int IsEmpty( List L );
void Delete( List L, ElementType X );
Position Find( ElementType X, List L );
Position FindPrevious( ElementType X, List L );
void Insert( ElementType X, Position P, List L );
void DeleteList( List L );
Position Header( List L );
Position First( List L );
Position Advance( Position P );
ElementType Retrieve( Position P );


#endif    /*   _List_H   */




struct Node
{
ElementType Element;
Position    Next;
};


int
IsEmpty( List L )
{
return L->Next == NULL;
}


int
IsLast( Position P, List L )
{
return P->Next == NULL;
}


Position
Find( ElementType X, List L )
{
Position P;
P = L->Next;
while( P != NULL && P->Element != X )
P = P->Next;


return P;
}


void
Delete( Element X, List L )
{
Position P, TmpCell;


P = FindPrevious( X, L );


if( !IsLast( P, L ) )
{
TmpCell = P->Next;
P->Next = TmpCell->Next;
free( TmpCell );
}
}


Position
FindPrevious( ElementType X, List L )
{
Position P;
while( P->Next != NULL && P->Next->Element != X )
P = P->Next;


return P;
}


void
Insert( ElementType X, List L, Position P )
{
Position TmpCell;

TmpCell = malloc( sizeof( struct Node ) );

TmpCell->Element = X;
TmpCell->Next = P->Next;
P->Next = TmpCell;
}

微笑加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值