//构造一个空表
int initList(Lnode* L)
{
L = new Lnode;
L->next = NULL;
return 1;
}
//销毁单链表
int DestroyList(Lnode* L)
{
Lnode* p;
while (L)
{
p = L;
L = L->next;
delete p;//删除节点
}
if (L)
{
return 0;
}
else return 1;
}
//清空链表
int ClearList(Lnode* L)
{
Lnode* p, * q;
p = L->next;
while (p)//直到表尾
{
q = p->next;
delete p;
p = q;
}
L->next = NULL;//头节点指针域为空
return 1;
}
//获取单链表长
int ListLength(Lnode* L)
{
Lnode* p;
p = L->next;
int i = 0;
while (p)
{
i++;
p = p->next;
}
return i;
}
//获取线性表某一个元素
int GetElem(Lnode* L, int i, int& e)
{
Lnode* p;
p = L->next;int j = 1;//初始化
while (p && j < i)
{
p = p->next;
++j;
}
if (!p || j > i)return 0;//第i个元素不存在
e = p->a;//获取第i个元素
return 1;
}
//头插法
void CreateList(lnode *L,int n)
{
lnode* p;
L = new lnode;
L->next = NULL;//建立一个带头结点的单链表
for (int i = n; i > 0; --i)
{
p = new lnode;//创建一个新的节点
cin >> p->data;
p->next = L->next;//插入到表头
L->next = p;
}
}
//尾插法
void CreateList1(lnode* L2, int n)
{
lnode* r, * p;
L2 = new lnode;
L2->next = NULL;
r = L2;//尾指针r指向头节点
for (int i = 0; i < n; i++)
{
p = new lnode;
cin >> p->data;//生成新节点输入新元素
p->next = NULL;
r->next = p;//插入到尾表
r = p;//r指向新的尾节点
}
}```