链表:
定义:由空间内任意空间存储,对于每一个结点,只知道当前数据域和直接后继的指针,链接起来的表叫做链表(有点类似于侦探小说里的猜疑链)
特性:每个结点由数据域和指针域构成,在第一个结点前还可以设置一个头结点,指向第一个结点(有点类似火车头和火车)
抽象数据类型:名称:链表
数据值集合:各个结点的全部数据域和指针域
操作集合:查找,插入,删除
代码:
typedef struct Node {
ElementType data;
struct Node* Next;

}Node;
typedef struct Node* Linklist;//结构体+指针实现(动态链表)

status find(int i, ElementType* e, Linklist L)
{
int j = 1;
Linklist p;
p = L->Next;
while (j<i && p != NULL)
{
p = p->Next;
j++;
}
if (p == NULL || j > i)
{
return ERROR;
}
*e = p->data;
return Ok;
}//查找(非常重要,动态链表所有操作都是如此)

status Insert(Linklist* L, int i, ElementType e)
{
Linklist p, s;
int j = 1;
p = *L;
while (j < i && p != NULL)
{
p = p->Next;
j++;
}
if (p == NULL || j > i)
{
return ERROR;
}
s = (Linklist)malloc(sizeof(struct Node));
s->data = e;
s->Next = p->Next;
p->Next = s;
return Ok;
}//插入

status Delete(int i, Linklist* L, ElementType* e)
{
int j = 1;
Linklist p,q;
p = *L;
while (j < i &&(p->Next) != NULL)
{
p->Next = p->Next->Next;
j++;
}
if (j > i || p->Next == NULL)
{
return ERROR;
}
*e = p->data;
q = p->Next;
p->Next = q->Next;
free(q);
return Ok;
}//删除

posted on 2026-01-03 11:08  WaguriKaoruko  阅读(5)  评论(0)    收藏  举报