当前位置: 首页 > 编程笔记 >

在C ++的链接列表中查找峰值元素

龚同
2023-03-14
本文向大家介绍在C ++的链接列表中查找峰值元素,包括了在C ++的链接列表中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下

在本教程中,我们将编写一个程序,该程序在给定的链表中查找峰值元素。

峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。

  • 为链表创建一个struct节点。

  • 用伪数据创建链接列表。

  • 检查基本情况,例如链表是否为空或长度为1。

  • 将第一个元素存储在一个名为previous的变量中。

  • 遍历链接列表。

    • 检查当前元素是否大于上一个元素和下一个元素。

    • 如果上述条件满足,则返回

    • 更新前一个元素。

  • 打印结果

示例

让我们看一下代码。

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void insertNewNode(struct Node** head_ref, int new_data) {
   struct Node* new_node = new Node;
   new_node->data = new_data;
   new_node->next = (*head_ref);
   *head_ref = new_node;
}
int findPeakElement(struct Node* head) {
   if (head == NULL) {
      return -1;
   }
   if (head->next == NULL) {
      return head->data;
   }
   int prev = head->data;
   Node *current_node;
   for (current_node = head->next; current_node->next != NULL; current_node = current_node->next) {
      if (current_node->data > current_node->next->data && current_node->data > prev) {
         return current_node->data;
      }
      prev = current_node->data;
   }
   if (current_node->data > prev) {
      return current_node->data;
   }
   return -1;
}
int main() {
   struct Node* head = NULL;
   insertNewNode(&head, 7);
   insertNewNode(&head, 4);
   insertNewNode(&head, 5);
   insertNewNode(&head, 2);
   insertNewNode(&head, 3);
   cout << findPeakElement(head) << endl;
   return 0;
}
输出结果

如果执行上述代码,则将得到以下结果。

5

结论

 类似资料:
  • 本文向大家介绍在C ++中查找峰值元素,包括了在C ++中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来查找给定数组中的峰元素 峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。 用伪数据初始化数组。 检查第一个元素和最后一个元素的峰值元素状况。 从第二个元素遍历数组。 检查当前元素是否大于上一个元素和下一个元素。 如果上述条件满足,则返回。 打印结果

  • 本文向大家介绍在C ++中查找2D数组中的峰元素,包括了在C ++中查找2D数组中的峰元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来查找2D数组中的峰值元素。 如果周围所有元素均小于该元素,则该元素称为峰元素。 让我们看看解决问题的步骤。 用伪数据初始化2D数组。 遍历2D数组。 首先,检查2D数组的角元素。 接下来,编写2D数组的第一行和最后一行的条件。 现在,检

  • 本文向大家介绍在C ++中查找链接列表的长度(迭代和递归),包括了在C ++中查找链接列表的长度(迭代和递归)的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到如何使用迭代和递归方法查找链表的长度。如果给出了头指针,我们必须遵循以下步骤来获取长度。 对于迭代方法- 以列表的开头,直到当前指针不为空,再转到下一个节点并增加计数。 对于递归方法- 将head作为参数传递,基本条件是参数为nu

  • 问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组:

  • 问题内容: 所以这是我的代码: 包含一个整数列表。我想比较于并打印出不在的数字相比时。 当不能比较时,我可以打印其中的元素,但是当我尝试使用上面的代码进行相反操作时,则什么也不会打印。 有什么帮助吗? 问题答案: 您的代码没有按照我认为的方式执行。该行将遍历,每次等于的一个元素。因此,在执行任何操作之前,原始列表将被覆盖。 我想你想要这样的东西: 但是您可以轻松地执行以下操作: 或(如果您不介意丢

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。