学习笔记-线性表-数据结构
链表部分。
定义
typedef int DATA;
struct Node
{
DATA data;
Node *next;
};
struct List
{
Node* head;
Node* last;
int count;
};
插入元素(把e元素插入到L的第i个元素之前,其中i>=0&&i<length)
bool ListInsert(List &L, int i, DATA e)
{
Node *p = new Node();
if (!p)return false;
if (i<0 || i>L.count-1)return false;
p->data = e;
if (i == 0)
{
p->next = L.head;
L.head = p;
}
else
{
int j = 0;
Node *loc = L.head;
while (loc&&j<i-1){
loc = loc->next;
j++;
}
p->next = loc;
loc->next = p;
L.count++;
}
return true;
}
从L中获取第i个元素并存入到e中
bool getElem(List L, int i, DATA &e)
{
Node *p = L.head;
int j = 0;
while (p)
{
if (j == i)
break;
p = p->next;
j++;
}
if (j == i) //找到了
{
e = p->data;
return true;
}
else
return false;
}
添加元素,直接追加到链尾部
bool addElem(List &L, DATA dt)
{
Node *p = new Node();
if (!p) //如果申请内存失败
return false;
p->next = NULL;
p->data = dt;
if (!L.head) //判断是否为空表
L.head = L.last = p;
else
{
L.last->next = p;
L.last = p;
}
L.count++; //L中元素数目+1
return true;
}