如何對list中部分元素排序

2021-06-07 16:30:43 字數 1888 閱讀 5259

直接上**

// main.h

#include "stdafx.h"

#include "datefile.h"

int _tmain(int argc, _tchar* argv)

// datefile.h

#pragma once

#include #include #include #include #include using namespace std;

typedef enum sorttype;

typedef struct tagnode

} else if (ntype == need_sort && node.ntype == dont_sort)

} bool bret = (wtarindex < node.wtarindex);

return bret;

}} node, *pnode;

typedef std::listcnodelist;

cnodelist g_lstnode;

void initdlglist(__in word wnum)

g_lstnode.push_back(node); }}

word* generatederangeorder(__in word wnum)

word * pwordtar = new word[wnum];

memset(pwordtar, 0, sizeof(word)*wnum);

// 2. 給目標陣列賦不重複的值

srand(gettickcount());

//cdlglist::iterator it = g_lstdlg.begin();

for (word i = 0; i < wnum; )

} // 3. dump出來

for (word i = 0; i < wnum; i ++)

// 4. 析構

delete pwordsrc;

//delete pwordtar;

return pwordtar;

}void derangedlglist(word * porder)

j ++;

if (it->ntype == need_sort)

} cout << "befor sort:" << endl;

// dump result

it = g_lstnode.begin();

for ( ; it != g_lstnode.end(); it ++) else if (it->ntype == need_sort)

} g_lstnode.sort();

cout << endl << "after sort:" << endl;

// dump result

it = g_lstnode.begin();

for ( ; it != g_lstnode.end(); it ++) else if (it->ntype == need_sort)

} delete porder;

porder = null;

}

1.區分排序與勿需排序的點.

list中每個節點都有乙個 sorttype 結構來判斷當前節點是需要排序的點, 還是不需要排序的點.

2.如何比較排序與勿需排序的點

這時需要設計list的sort函式,  我們需要知道list中所有排序與勿需排序的點之前的位置,

然後在比較的時候,  根據設定的排序值來比較.

另附一張程式過程圖

List元素自動排序

1 list中的物件實現comparable介面適用於list元素是可操作物件a 在元素物件裡面,加乙個compareto方法,如下 物件有欄位 order,並有對應的獲取方法 getorder 對order進行比較。public intcompareto user arg0 b 然後在需要排序的地...

HTML中部分元素介紹和CSS的層級關係

元素是塊級元素,他可用於組合其他html元素的容器。元素沒有特定的含義。由於他屬於塊級元素,瀏覽器會在其前後顯示換行。使用css,元素可以對所對應的內容塊設定樣式屬性。元素可作用文字的容器,沒有特定的含義。使用css時,元素可用於部分文字設定樣式屬性。級別選擇器權重a 行內樣式 1000 bid選擇...

對List物件進行排序

最近遇到需要對 list 物件按照某一引數 string型別 進行排序的問題,網上教的大多是自己寫排序方法或者用collections.sort 方法按照某一int型引數進行排序,找了好久找到一種很方便快捷的排序方法。對systemdatelist按systemtype進行排序 systemdate...