1.3.3线性表的链式存储结构adt
2016-12-12 21:05
211 查看
//结点类型
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中尾结点的位置
<
4000
span>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失败则操作失败
/////////***********待完善****************/////////博主打字打到现在好累
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中尾结点的位置
<
4000
span>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失败则操作失败
/////////***********待完善****************/////////博主打字打到现在好累
相关文章推荐
- ※数据结构※→☆线性表结构(stack)☆============栈 链式存储结构(stack list)(七)
- 线性表(List)---链式存储结构(双向链表)
- 一、(2)C++ 实现简单的线性表(链式存储结构 - 单链表)
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
- 《数据结构》线性表:链式存储结构实现示例代码一(构造,遍历,析构)
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
- 【待整理】线性表——链式存储结构
- 链式存储结构的线性表
- 链式存储结构线性表
- 《数据结构》线性表:链式存储结构实现示例代码二(插入、删除、查找)
- 【线性表】之链式存储结构
- 大话数据结构(二)——线性表链式存储结构(单链表)的java实现
- 线性表(List)---链式存储结构(单向链表)
- ※数据结构※→☆线性表结构(list)☆============双向循环链表 链式存储结构(list circular double)(五)
- ※数据结构※→☆线性表结构(queue)☆============优先队列 链式存储结构(queue priority list)(十二)
- 线性表运算--链式存储结构模板类实现
- 数据结构(四)——基于链式存储结构的线性表
- 线性表链式存储结构实现 --单链表
- 线性表-链式存储结构(单链式)
- ※数据结构※→☆线性表结构(list)☆============双向链表 链式存储结构(list double)(三)