c++ - 对链表的值进行排序并打印它们
问题描述
我有一个清单:
struct node
{
string name;
int value;
node* next;
};
例如,我将 5 个元素保存到它。
现在我想找到三个最大的元素。
node* help = head;
for (int i = 0; i < M; i++)
{
node* help2 = head;
while (help->next)
{
if (help->next->value > help->value)
{
help2 = help->next;
}
help = help->next;
}
cout << help2->name;
}
多亏了这一点,我才能找到最大的数字并显示它的名称。但我不知道如何找到第二个和第三个元素并显示它们。
解决方案
如果您不知道排序,请参阅此链接https://www.geeksforgeeks.org/sorting-algorithms/以更好地了解排序算法的概念和类型。在此示例中,我们使用冒泡排序算法按降序对元素进行排序 //按照您所说的链表中有 5 个元素对链表进行排序
//n=5 i. e size of linked list
for(int i=0;i<n;i++)//sorting logic for linked list to be in descending order
{
temp=head;
for(int j=0;j<n-1-i;j++)
{
if(temp->value<temp->next->value)
{
val=temp->value; //val is integer variable
nm=temp->name; //nm is string variable
temp->value=temp->next->value;
temp->name=temp->next->name;
temp->next->value=val;
temp->next->name=nm;
}
temp=temp->next;
}
}
temp=head;
for(int i=0;i<3;i++)// prints 3 elements as you want 3 greatest numbers
{
cout<<temp->value<<endl;
cout<<temp->name<<endl;
temp=temp->next;
}
推荐阅读
- javascript - 突出显示 HTML 中的特定单词
- wordpress - Wordpress 默认目录更改
- javascript - 我的下拉列表选择 onchange 没有在 Angular js 中触发
- angular - 量角器无法检测元素
- docker - 容器运行时如何将容器文件夹同步到本地空文件夹
- c# - ASP.NET Core SignalR 从任何地方访问 Hub 方法
- flutter - Using GlobalMaterialLocalizations.delegate provides error
- web - 在云中使用密码验证运行静态网站
- vue.js - 当我的 vuex getter 在观察者中返回空值时,如何从状态中获取值
- python - 在 Pandas DataFrame 上使用 Python 中的 R lm 函数