#include
#include
using namespace std;
#define OVERFLOW -2
#define FALSE 0
#define TRUE 1
#define MAXSIZE 10
#define OK 1
#define ERROR -1
// 单链表结点
typedef struct Node{
Node *next; // 头结点,分两种一种有头节点,一种无头结点(直接指向首元结点)
float date; // 此处数据类型可自己定义,可用结构体等 *num或num[]都可
}*List, Node;
// 单链表的初始化 (带有头结点) (循环链表的最后一个结点指向头节点)
// 带有尾指针的循环链表
int initList(List &l){
l->next = NULL;
return OK;
}
// 判断链表是否为空
int isEmpty(List &l){
return l->next==NULL?TRUE:FALSE;
}
// 销毁单链表
int destroyList(List &l){
Node *node = l;
while(node){
l = node;
node = node->next;
delete l;
}
return OK;
}
// 清空单链表(可以尝试递归删除)
int clearList(List &l){
Node *node = l->next;
destroyList(node);
l->next = NULL;
return OK;
}
// 求表长
int getLength(List &l){
Node* node = l->next;
int i = 0;
while(node){
i++;
node = node->next;
}
return i;
}
// 获取某个元素的内容
int getElem(List &l, int n){
Node *node = l->next;
int i = 1;
while(i
++i;
}
if(i>n||!node->date) return ERROR;
return node->date;
}
// 定位元素位置
int locateElem(List &l, float elem){
Node *node = l->next;
int i = 1;
for(;node&&node->date!=elem;++i){
node = node->next;
}
if(node) return i;
return ERROR;
}
// 插入元素
int insertElem(List &l, float elem, int n){
Node *node = new Node;
Node *p = l->next;
int i = 1;
while(i
p = p->next;
}
if(i>=n||!p) return ERROR;
node->date = elem;
node->next = p->next;
p->next = node;
return OK;
}
// 删除元素并返回删除元素得值
int deleteElem(List &l, int n){
Node *h = new Node;
Node *p = l->next;
int i = 1;
float e;
while(i
p = p->next;
}
if(i>=n||!p) return ERROR;
h = p->next;
e = h->date;
p->next = p->next->next;
delete h;
return e;
}
// 创建一个链表(头插法)
List createList(int n){
List l = new Node;
l->next = NULL;
for(int i=0;i
node->next = l->next;
node->date = i2;
l->next = node;
}
return l;
}
// 尾插法
List createList_R(int n){
List l = new Node;
Node *p = l;
l->next = NULL;
for(int i=0;i
node->next = NULL;
node->date = i2;
p->next = node;
p = node;
}
return l;
}
int main(void){
List l = new Node;
// cout << l->next;
// cout << isEmpty(l);
// initList(l);
// cout << l->head;
return 1;
}



