指针,栈,链表习题
2025-09-23 16:22:05
发布于:浙江
我发布内容有答案(拿回去温水冲服,他日必将强的可怕)
习题1:指针基础(难度:★)
题目:
编写一个程序,包含以下功能:
创建一个整型变量 num 并赋值为100
创建一个指针 ptr 指向这个变量
通过指针修改 num 的值为200
分别输出修改前后的值和指针地址
预期输出:
修改前值: 100, 地址: 0x7ffee3a5
修改后值: 200, 地址: 0x7ffee3a5
习题2:栈的应用(难度:★★)
题目:
用C++的stack实现字符串反转函数:
string reverseString(const string& input) {
// 你的代码 here
}
int main() {
cout << reverseString("hello"); // 应输出 "olleh"
}
要求:
使用标准库的stack
禁止使用reverse等现成算法函数
习题3:链表操作(难度:★★★)
题目:
实现单向链表的"删除所有指定值"功能:
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
void deleteValues(Node* &head, int target) {
// 你的代码 here
}
// 示例用法:
int main() {
Node* head = new Node(1);
head->next = new Node(2);
head->next->next = new Node(3);
head->next->next->next = new Node(2);
deleteValues(head, 2); // 删除所有值为2的节点
// 输出应显示:1 -> 3 -> NULL
}
要求:
正确处理头节点删除的情况
避免内存泄漏
附加思考题(选做)
场景:
假设我们用链表实现栈,如何优化同时获取栈顶和栈底元素的操作?(提示:可以考虑双向链表或额外指针)
这里空空如也
有帮助,赞一个