本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下
时间: 2023-06-05 16:48:10 浏览: 140
试设计实现在单链表中删去值相同的多余结点的算法。
链表结点定义:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
实现函数:
1. 将读入的数据存储为单链表:
ListNode* createLinkedList(vector<int>& nums) {
ListNode* head = new ListNode();
ListNode* cur = head;
for (int i = ; i < nums.size(); i++) {
cur->next = new ListNode(nums[i]);
cur = cur->next;
}
return head->next;
}
2. 将链表中所有存储了某给定值的结点删除:
ListNode* removeElements(ListNode* head, int val) {
ListNode* dummy = new ListNode();
dummy->next = head;
ListNode* cur = dummy;
while (cur->next != NULL) {
if (cur->next->val == val) {
ListNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
} else {
cur = cur->next;
}
}
return dummy->next;
}
阅读全文