結構體及結構體排序

2021-09-29 10:27:32 字數 1453 閱讀 5172

<1>定義的方法

struct node //   用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。

p[1000];

//這樣你就定義了乙個神奇的陣列!!沒錯,它就是node型陣列!!

上面的**還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這樣定義比在主函式中定義整潔。。。。。大概就是這樣吧,反正用不用都可以就對了。

除此之外,結構體中也可以放入陣列,string之類的東西。

<2>一些奇奇怪怪的操作

通常為了方便理解,我們會把定義結構體命名成你原本想表達的意思,但這有時會讓你定義的結構體名字很長。比如:你要在結構體裡儲存乙個班級所有學生的姓名和成績,你就可以把結構體命名為student,但是你覺得後面用到結構體時輸student很麻煩,於是你想把它簡化成stu,你可以通過以下**實現

typedef

struct student //用typedef來建立乙個結構體。

stu;

//可以在這裡給你的結構體改名。

這個**裡用到了typedef,如果用到了這個。。。「東西」(我也不知道該把它叫啥),其實你也可以不在struct後給結構體命名,你可以像這樣

typedef

struct

student;

//直接在末尾命名。

struct student

p[100];

typedef student stu;

//像這樣改名也是可以的。

emmm,就這麼多吧,結構體真沒啥好說的。

其實就是要用bool型重新寫個函式(一般叫cmp),來明確排序規則,然後想都別想用sort就好了,嘿嘿qwq

這個寫個例題,自己體會好了,感覺上沒啥好講的。。。

例題乙個班級有n個學生,輸入這n個學生的姓名,分數,按分數降序排序,若分數相同,則按出現順序公升序排序,輸出排序後的學生姓名。

#include

using

namespace std;

struct student //定義結構體。

p[1000];

typedef student stu;

//改名。

bool

cmp(stu x, stu y)

//定義sort的方法。

intmain()

sort

(p, p + n, cmp)

;for

(int i =

0; i < n; i ++

)return0;

}

這應該是有關結構體排序最簡單的一種題目,難的題目會在定義sort方式時給出很多很多的邏輯問題,也是在做此類題目時,最容易出錯,最需要注意的一點(至少我是常在這出錯。。。)

結構體排序

description excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。input 測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數 n 100000 和 c,其中 n 是紀錄的條數,c 是指定排序的列號。以下有 n 行,每行包含一條學生紀錄。每條學生紀錄由學號 6位...

結構體排序

貪心演算法中不想交區間問題 題目 解題思路 定義兩個變數,乙個記為結束時間,乙個記為區間數。將結束時間排序,若相同,就將開始時間從大到小排序 若不同,就將結束時間按從小到大排序。這樣第乙個區間是確定的,再比較下乙個區間的開始時間與第乙個區間結束時間的大小,大於則加一。再將結束時間改變即可,繼續迴圈。...

結構體排序

結構體排序 本關任務 有n個學生的資訊 包括學號,姓名,成績 要求按照成績的高低順序輸出學生的資訊。補充 要求按照成績的高低順序輸出學生的資訊。平台會對你編寫的 進行測試,比對你輸出的數值與實際正確數值,只有所有資料全部計算正確才能通過測試 測試輸入 5 10101 zhang 78 10103 w...