给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
class Solution { public: ListNode* deleteNode(ListNode* head, int val) { ListNode *q; ListNode *p = head; if(p->val == val) return head->next; //删除头结点 if(!head) return head; //空链表直接返回 while(p) { if(p->val != val ) { q = p; p = p->next; }else{ q->next = p->next; break; } } return head; } };Q2 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
经典题目。
class Solution { public: ListNode* getKthFromEnd(ListNode* head, int k) { int n = 1; ListNode* p = head,*q = head; while(p) { p = p->next; if(++n == k) break; } while(p->next) { p = p->next; q = q->next; } return q; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)