当前位置:新励学网 > 秒知问答 > 华为C笔试题

华为C笔试题

发表时间:2024-11-11 21:13:31 来源:网友投稿

华为C++笔试题之一如下:

题目:编写一个C++程序,实现一个简单的链表,包含插入、删除和查找功能。要求:

定义一个链表节点类,包含数据和指向下一个节点的指针。

实现链表的插入操作,将新节点插入到链表的指定位置。

实现链表的删除操作,删除链表中指定位置的节点。

实现链表的查找操作,查找链表中指定值的节点。

代码如下:

#include <iostream> using namespace std; // 定义链表节点类 class ListNode { public: int data; ListNode* next; ListNode(int val) : data(val), next(nullptr) {} }; // 插入操作 void insert(ListNode* head, int val, int pos) { ListNode* newNode = new ListNode(val); if (pos == 0) { newNode->next = head; head = newNode; } else { ListNode* cur = head; int i = 0; while (cur != nullptr i < pos - 1) { cur = cur->next; i++; } newNode->next = cur->next; cur->next = newNode; } } // 删除操作 void deleteNode(ListNode* head, int pos) { if (head == nullptr) return; ListNode* cur = head; ListNode* prev = nullptr; int i = 0; while (cur != nullptr i < pos) { prev = cur; cur = cur->next; i++; } if (prev == nullptr) { head = cur->next; } else { prev->next = cur->next; } delete cur; } // 查找操作 ListNode* search(ListNode* head, int val) { ListNode* cur = head; while (cur != nullptr) { if (cur->data == val) { return cur; } cur = cur->next; } return nullptr; } int main() { ListNode* head = nullptr; insert(head, 1, 0); insert(head, 2, 1); insert(head, 3, 2); cout << "Original List: "; printList(head); deleteNode(head, 1); cout << "After deleting 1st node: "; printList(head); ListNode* node = search(head, 2); if (node != nullptr) { cout << "Found value 2: " << node->data << endl; } else { cout << "Value 2 not found" << endl; } return 0; }

以上是一个简单的链表实现,包括插入、删除和查找功能。在主函数中我们创建了一个链表,插入了一些数据,然后进行了删除和查找操作。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!