链表的实现
作为数组的改进型,链表拥有着数组不可比拟的灵活性,即大小可以随时申请改变,而数组则必须预先将大小确定,此后再无法更改。但是,链表也具有一个特性,那就是链表必须有一个头指针,因为这是外界操作和查找链表的入口。
链表又分为单向链表和双向链表。两者均由一个个的节点组成。但是两者的节点却不尽相同,其中,单向链表的节点拥有一个指针域和一个数据域,指针域指向下一个节点的首地址,这种连接结构决定了单向链表只能单向操作,一旦错过需要操作的节点,唯一补救的办法是回到头指针遍历回来。而双向链表的节点则拥有两个指针域和一个数据域,双链表与单链表相比,多了一个前向指针。前向指针指向其前一个节点的首地址,使用起来较单向链表灵活,不存在单向链表错过需操作的节点后要遍历回来的问题。
两者节点是事项方式均可使用结构体进行实现
单向链表节点的实现:
struct node {
int data;
struct node *pNext;
}
双向链表的节点实现:
struct node{
struct node *precv;
int data;
struct node *pNext;
}
,都具有增删查改的功能。