//通常使用结构的嵌套来定义单向链表结点的数据类型
typedef struct Node *PtrToNode;//将Node命名为PtrToNode
struct Node
{ElementType Data;//存储结点数据PtrToNode Next;//指向下一个结点的指针
};
//结构类型Node中的Next分量又是该结构类型的指针,称之为结构的递归定义
//为了阅读方便,我们将指针重命名为PtrToNode,即“指向Node的指针”的含义//通常我们说给定一个单链表,就是给定一个指向该链表表头的指针,所以“单链表类型”List可以定义为链表结点结构的指针
typedef PtrToNode List;
插入结点
在单向链表head的某个结点p之后插入新结点:
1.找到正确位置p
2.申请新结点t并对t的结点信息赋值,最后将t插在p之后:
t->Next=p->Next;
p->Next=t;
(
如果需要在链表的头上插入一个结点t
t->Next=head;
head=t;
)
删除结点
1.找到被删结点的前面一个结点p
2.删除p之后的那个结点
t=p->Next;
p->Next=t->Next;
free(p);
(
如果删除的是链表的第一个结点
t=head;
head=head->Next;
free(t);
)