C++对单向链表进行排序
生活随笔
收集整理的這篇文章主要介紹了
C++对单向链表进行排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <iostream>
using namespace std;
struct student
{int num;char name[10];float score[3];float sum;student *next;
};void main()
{student a[5];student *h, *curr, *temp, *last; //h頭指針,curr當前指針,last當前指針的上一個指針(curr的上一個指針)for (int i = 0; i < 5; i++){cout << "student" << i + 1 << ":"<<endl;cin >> a[i].name >> a[i].num >> a[i].score[0] >> a[i].score[1] >> a[i].score[2];a[i].sum = a[i].score[0] + a[i].score[1] + a[i].score[2];}h = a;for (int i = 0; i<4; i++)a[i].next = &a[i + 1];a[4].next = NULL;for (int j = 0; j<4; j++){curr = h;for (int i = 0; i<4 - j; i++){if (curr->sum>curr->next->sum){if (i == 0) //將第一個結點和第二個結點交換,此時需要改變頭指針{temp = h;h = h->next; //將頭指針設為第二個節點temp->next = h->next; //令第一個節點后面接第三個節點h->next = temp; //令第二個節點后面接第一個節點curr = h->next;continue;}else //交換curr和curr->next指針{last = h;for (int k = 0; k<i - 1; k++)last = last->next; //找出curr的上一個指針temp = curr; //原理和上面交換第一二個結點是一樣的,將上面i==0的代碼中的h替換成curr即可得到下面的代碼curr = curr->next;temp->next = curr->next;curr->next = temp;last->next = curr; //將上一個指針和交換后的curr指針相連}}curr = curr->next;}}//打印排序后的信息cout << "num" << '\t' << "name" << '\t' << "score1" << '\t' << "score2" << '\t' << "score3" << '\t' << "sum" << endl;for (int i = 0; i<5; i++){cout << h->num << '\t' << h->name << '\t' << h->score[0] << '\t' << h->score[1] << '\t' << h->score[2] << '\t' << h->sum << endl;h = h->next;}}
?
總結
以上是生活随笔為你收集整理的C++对单向链表进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 混淆矩阵及分类性能评估方法
- 下一篇: 下载CIFAR-10、CIFAR-100