通过链表的一些题目,了解链表的基本操作实现,掌握递归算法的基本思路,掌握扎实的编程习惯。
一、单链表基本操作
1.1、单链表节点定义
struct ListNode { int value; ListNode *pNext; };
1.2、在尾部插入节点
void AddToTail(ListNode *pHead, int value) { /* * 尾部插入 * 添加空的头结点,简化代码 */ ListNode *node = new ListNode(); node->value = 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、