定义链表的数据结构

typedef struct _LinkNode {
	int data; //节点的数据
	struct _LinkNode* next; //节点的指针区域
}LinkNode,LinkList; //链表节点、链表

构造一个空链表的方法

bool InitList(LinkList* &L) //构造一个空的链表L
{
	L = new LinkNode;
	if (!L) return false; //生成节点失败
	L->next = NULL;
	return true;
}

前插法插入一个节点

//前插入法
bool ListInsert_front(LinkList*& L, LinkNode* node)
{
	if (!L || !node) return false;

	node->next = L->next;
	L->next = node;
	return true;
}

举个例子:

dd7784775fa6fb89cfb7dcb569b3940e.jpg

现在有一个空链表L,一个节点node1,现在要用前插入法,将node1插入到链表中,

第一步

node->next = L->next;

两个值都是null,这一步没实际意义,

第二部:

L->next = node;

4d6b3332af66fca454f01cfd45e5caa2.jpg

现在已经利用前插入法,将node1插进了链表L。


现在又有一个新的节点,node2,我们用前插入法,将node2插入到链表L中:

目前的状态,有一个链表L,链表里有两个节点,还有一个新节点node2

7d280420-0c17-4cb9-83c6-a88148d736cf.png

第一步

node->next = L->next;

80c5b06ba48954fe7cd2bfc5b5d6ff1e.jpg

第二步

L->next = node;

9317ec2107b4e1fe6392f9994897f0f4.jpg

这样,我们就把节点node2,也用前插入法,插入到了链表L中!