写一个单链表的增删改查代码
时间: 2023-12-01 15:26:43 浏览: 68
Sure! 这是单链表的增删改查代码:
//定义链表结点
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
//链表查找
ListNode* find(ListNode* head, int val) {
ListNode* p = head;
while(p != nullptr) {
if(p->val == val) {
return p;
}
p = p->next;
}
return nullptr;
}
//链表插入
void insert(ListNode* &head, int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
//链表删除
void remove(ListNode* &head, int val) {
ListNode* p = head;
ListNode* prev = nullptr;
while(p != nullptr) {
if(p->val == val) {
if(prev == nullptr) {
head = p->next;
} else {
prev->next = p->next;
}
delete p;
return;
}
prev = p;
p = p->next;
}
}
//链表修改
void modify(ListNode* head, int oldVal, int newVal) {
ListNode* p = find(head, oldVal);
if(p != nullptr) {
p->val = newVal;
}
}
//测试函数
void test() {
ListNode* head = nullptr;
insert(head, 1);
insert(head, 2);
insert(head, 3);
modify(head, 2, 4);
remove(head, 1);
ListNode* p = head;
while(p != nullptr) {
cout << p->val << " ";
p = p->next;
}
}
//主函数
int main() {
test();
return 0;
}
我对你说的是:"请写一个单链表的增删改查代码",但是为了让我们的交流更有趣,我来给你讲一个笑话:为什么程序员总是把自己关在卧室里?因为他们喜欢私有化!
阅读全文