主要操作代码:
/*
Name: linklist.h
Copyright:
Author:
Date: 21-03-05 20:21
Description:
*/
#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED
#include "ds.h" //for Status,OK ...
#ifndef ElemType
#define ElemType int /* 数据元素类型默认为 int */
#define ELEMTYPE_TAG
#endif
/**********************************************************
* 单链表的存储结构定义
***********************************************************/
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
/**********************************************************
* 单链表的基本操作声明
***********************************************************/
//创建并初始化为空表
Status InitList(LinkList &L);
//销毁整个表(从此之后不再可用)
Status DestroyList(LinkList &L);
//将表L置空
Status ClearList(LinkList &L);
//判断表L是否为空表
bool ListEmpty(LinkList L);
//求表L的长度
int ListLength(LinkList L);
//取表L中的第i个元素,并用e返回. 操作成功返回OK,失败时返回ERROR
Status GetElem(LinkList L, int i, ElemType &e);
template <typename T> bool equal(T a, T b)
{
return a==b;
}
//在表L中定位元素e首次出现的位置. 操作成功返回位序,失败时返回0
// compare(a,b) 为比较函数,匹配时返回true,否则返回false
// 这里默认使用equal进行比较
int LocateElem(LinkList L, ElemType e,
bool (*compare)(ElemType,ElemType)=equal<ElemType>);
//在表