链表
链表的结构很简单,是由指针把若干个节点连接成链状结构。链表是一种动态的数据结构,其操作需要对指针进行操作。链表的操作主要包括:
- 链表的创建
- 插入节点
- 删除节点
单项链表的节点定义:
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
在链表的末尾添加节点:
void AddToTail(ListNode** pHead, int value)
{
ListNode* pNew = new ListNode();
pNew->m_nValue = value;
pNew->m_pNext = NULL;
if(*pHead == NULL)
{
*pHead = pNew;
}
else
{
ListNode* pNode = *pHead;
while(pNode->m_pNext != NULL)
pNode = pNode->m_pNext;
pNode->m_pNext = pNew;
}
}
以上,pHead是一个指向指针的指针。
当我们向一个空链表中插入一个节点时,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针ListNode** pHead
,否则出了这个函数pHead仍然是个空指针。