1.3.3线性表的链式存储结构adt

来源:互联网 发布:李炎恢 javascript 编辑:程序博客网 时间:2024/05/17 07:51
//结点类型
typedef struct LNode{
     ElemType          data;
     struct LNode     *next;
}*Link,*Position;

//链表类型
typedef struct LNode{
     Link  head,tail;          //分别指向线性链表中的头结点和最后一个结点
     int         len;          //指示线性链表中的数据元素的个数
}LinkList;

/*******************线性链表基本操作*********************/
Status MakeNode(Link &p,ElemType e);
    //分配由p指向的值为e的结点,并返回OK;若分配失败,则返回ERROR;
void FreeNode(Link &p);
    //释放p所指向的结点
Status InitList(LinkList &L);
    //构造一个空的线性链表L
Status DestroyList(LinkList &L);
    //销毁线性链表L,L不再存在
Status ClearList(LinkList &L);
    //将线性链表L重置为空表,并释放原链表的结点空间
Status InsFirst(Link h,Link s);
    //已知 h 指向线性链表的头结点,将 s 指向结点插入在第一个结点之前
Status DelFirst(Link h,Link &q);
    //已知 h 指向线性链表的头结点,删除链表中的第一个结点并以 q 返回
Status Append(LinkList &L,Link s);
    //将 s 指向的一串结点链接在线性表L的最后一个结点
    //之后改变链表L的尾指针指向新的尾结点
Status Remove(LinkList &L,Link &q);
    //删除线性链表L中的尾结点并以q返回,改变链表L的尾指针指向新的尾结点
Status InsBefore(LinkList &L,Link &p,Link s);
    //已知p指向线性表L中的一个结点,将s所指结点插入到p所指结点之前
    //并修改指针p指向新插入的结点
Status InsAfter(LinkList &L,Link &p,Link s);
    //已知p指向线性表L中的一个结点,将s所指结点插入到p所指结点之后
    //并修改指针p指向新插入的结点
Status SetCurElem(Link &p,ElemTyoe e);
    //已知p指向线性表L中的一个结点,用e跟新p所指结点中数据元素的值
Status GetCurElem(Link p,ElemTyoe &e);
    //已知p指向线性表L中的一个结点,用e返回p所指结点中数据元素的值
Status ListEmpty(LinkList L);
    //若线性表L为空表,则返回TRUE,否则返回FALSE
int ListLength(LinkList L);
    //返回线性表L中元素个数
Position GetHead(LinkList L);
    //返回线性表L中头结点的位置
Position GetLast(LinkList L);
    //返回线性表L中尾结点的位置
Position PriorPos(LinkList L,Link p);
    //已知p指向线性表L中的一个结点,返回p所指结点的直接前驱位置
    //若无前驱则返回NULL
Position NextPos(LinkList L,Link p);
    //已知p指向线性表L中的一个结点,返回p所指结点的直接后继位置
    //若无后继则返回NULL
Status LocatePos(LinkList L,int i,Link &p);
    //用p返回线性链表L中第i个位置的结点并返回OK,i值不合法则返回ERROR;
Position LocateElem(LinkList L,ElemType e,Status(*compare)(ElemType,ElemType));
    //返回线性链表L中第一个与e满足函数compare()判定关系的元素的位置
    //若不存在这样的元素则返回NULL

Status ListTraverse(LinkList L,Status(*visit)());
    //依次对L的每个元素调用函数visit()。一旦visit失败则操作失败

/////////***********待完善****************/////////博主打字打到现在好累
0 0