Leetcode.206反转链表
思考:头尾定义,在头结点处一遍插入一边删除。
struct ListNode* reverseList(struct ListNode* head){
typedef struct ListNode LNode;
LNode* p = head; //头
LNode* h = (LNode*)malloc(sizeof(LNode)); //动态分配空间
h->next = NULL; //尾
LNode* s = h;
while(p != NULL)
{
LNode* t;
t = p;
p = p->next;
t->next = NULL; //删掉头结点
t->next = s->next; //将尾部连接到头
s->next = t;
}
return h->next;
}
Leetcode237删除链表中的结点
思考:这道题给出的不是头结点,不能去找需要待删除结点的位置,直接找已知结点的下一个结点,将下一个结点的val和next指针分别替换到该位置,free掉下一个指针就行。
void deleteNode(struct ListNode* node) {
struct ListNode* next = node->next;
node->val = next->val;
node->next = next->next;
free(next);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)