首页 > 代码库 > 算法:链表

算法:链表

通过链表的一些题目,了解链表的基本操作实现,掌握递归算法的基本思路,掌握扎实的编程习惯。

一、单链表基本操作

1.1、单链表节点定义

struct ListNode{    int value;    ListNode *pNext;};

 

1.2、在尾部插入节点

void AddToTail(ListNode *pHead, int value){    /*     *    尾部插入     *        添加空的头结点,简化代码     */    ListNode *node = new ListNode();    node->value =http://www.mamicode.com/ value;    node->pNext = NULL;    ListNode *p = pHead;    while (p->pNext != NULL)    {        p = p->pNext;    }        p->pNext = node;}

 

1.3、删除第一个含有某值得节点

void RemoveNode(ListNode *pHead, int value){    if (pHead->pNext == NULL)    {        return;    }    ListNode *p = pHead;    while (p->pNext != NULL && p->pNext->value != value)    {        p = p->pNext;    }    if (p->pNext != NULL)    {        ListNode *p1 = p->pNext;        p->pNext = p1->pNext;        delete p1;    }}

 

二、有点难度的问题

2.1、