Directorio de artículos
1. Conceptos relacionados de la lista vinculada
1. Sustantivos relacionados
2. Las características de la lista vinculada
3. Clasificación de listas vinculadas
4. Representación de lista enlazada individualmente
En segundo lugar, la implementación de C ++ de lista enlazada individualmente
typedef struct
{
string name;
int age;
}Student; //定义结点的数据域
typedef struct LNode
{
Student data; //结点的数据域
LNode* next; //结点的指针域
}LNode, *LinkList; //定义结点
int InitList(LinkList &L) //链表的初始化
{
L = new LNode(); //让头指针指向头结点
L->next = NULL;
return 1;
}
int IsEmpty(LinkList L) //判断链表是否为空
{
return L->next==NULL?1:0;
}
int DestoryList(LinkList &L) //销毁链表
{
LinkList p = L;
while(L)
{
p = L;
L = L->next;
delete p;
}
return 1;
}
int ClearList(LinkList &L) //清空链表
{
LinkList p = L->next;
LinkList q;
while(p)
{
q = p->next;
delete p;
p = q;
}
L->next = NULL;
return 1;
}
int ListLength(LinkList L) //获得链表的长度
{
LinkList p = L->next;
int i = 0;
while(p)
{
i++;
p = p->next;
}
return i;
}
int GetLNode(LinkList L, int i, Student& s) //获取链表中第i个元素的数据域
{
int j = 1;
LinkList p = L->next;
while(p&&j<i)
{
p = p->next;
j++;
}
if(!p||j>i)
{
return 0;
}
s = p->data;
return 1;
}
LNode *FindLNode(LinkList L, Student s) //查找指定元素并返回其地址
{
LinkList p = L->next;
while(p&&(p->data.age!=s.age||p->data.name!=s.name))
{
p = p->next;
}
return p;
}
int InsertLNode(LinkList &L, int i, Student s) //将数据s插入到链表的第i个位置
{
LinkList p = L;
int j = 0;
while(p&&j<i-1)
{
p = p->next;
j++;
}
if(!p||j>i-1)
{
return 0;
}
LinkList q = new LNode();
q->data = s;
q->next = p->next;
p->next = q;
}
int DeleteLNode(LinkList &L, int i) //删除链表中的第i个结点
{
LinkList p = L;
int j = 0;
while(p->next&&j<i-1) //找到第i-1个结点
{
p = p->next;
j++;
}
if(!(p->next)||j>i-1)
{
return 0;
}
LinkList q = p->next;
p->next = q->next;
delete q;
return 1;
}
void CreatList1(LinkList& L, int n) //头插法创建含有n个结点的链表
{
InitList(L);
LinkList p;
for(int i=0; i<n; ++i)
{
p = new LNode();
cin >> p->data.age;
cin >> p->data.name;
p->next = L->next;
L->next = p;
}
}
void CreatList2(LinkList& L, int n) //尾插法创建含有n个结点的链表
{
InitList(L);
LinkList p, q = L;
for(int i=0; i<n; ++i)
{
p = new LNode();
cin >> p->data.age;
cin >> p->data.name;
p->next = NULL;
q->next = p;
q = p;
}
}