如何实现在集合的遍历的同时进行删除和增加元素?
问题描述(执行流程):
1.集合最初因条件增加元素
2.遍历集合,执行一个,删除一个,
3.删除的元素又会因条件增加一些元素(可能没有)
4.遍历完后,就结束
你这个需求用堆栈比用集合更合适
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
// 创建一个新的堆栈实例
Stack<String> stack = new Stack<>();
// 添加元素到堆栈
stack.push("第一个元素");
stack.push("第二个元素");
stack.push("第三个元素");
// 输出堆栈中的元素
System.out.println("堆栈中的元素是:" + stack);
// 从堆栈中取出元素并输出
while(!stack.isEmpty()) {
String element = stack.pop();
System.out.println("取出的元素是:" + element);
}
// 输出堆栈为空
System.out.println("堆栈已为空");
}
}
方法一:一次遍历
思路:
由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。
具体地,我们从指针cur 指向链表的头节点,随后开始对链表进行遍历。如果当前 cur 与 cur.next 对应的元素相同,那么我们就将 cur.next 从链表中移除;否则说明链表中已经不存在其它与 cur 对应的元素相同的节点,因此可以将cur 指向 cur.next。
当遍历完整个链表之后,我们返回链表的头节点即可。
struct ListNode* deleteDuplicates(struct ListNode* head) {
if (!head) {
return head;
}
struct ListNode* cur = head;
while (cur->next) {
if (cur->val == cur->next->val) {
cur->next = cur->next->next;
} else {
cur = cur->next;
}
}
return head;
}