這裡介紹氣泡排序在鍊錶中的實現。
/*
* bubble sort for bi-linked list;
* flag > 0, oreder from little to large, < 0 from large to little;
*/#if 1
int sort_lst(list *head, const int flag)
}else
} } }
gettimeofday(&t2, null);
printf("spend: %ld us\n", 1000000*(t2.tv_sec - t1.tv_sec) + t2.tv_usec - t1.tv_usec);
return 0;
}#else
int sort_lst(list *head, const int flag)
}else
} } }
gettimeofday(&t2, null);
printf("spend: %ld us\n", 1000000*(t2.tv_sec - t1.tv_sec) + t2.tv_usec - t1.tv_usec);
return 0;
}#endif
這裡第二種是優化的演算法,經測試效能有所提公升。 雙向鍊錶實現
template class link link link pre null,link ne null void operator new size t void operator delete void ptr template link link freelist null template v...
雙向鍊錶實現
雙向鍊錶的應用背景主要是單向鍊錶只能順序訪問,逆序訪問單向鍊錶 尤其是較大的單向鍊錶是一件極其費時費力的工作 相比於單向鍊錶,雙向鍊錶增加了乙個域,這個域裡面增加了乙個指向前驅節點的指標,使得整個鍊錶可以順序訪問或者逆序訪問,來去自如 定義的雙向鍊錶的標頭檔案,裡面包含了雙向鍊錶的宣告和資料型別的定...
實現雙向鍊錶
雙向鍊錶和單向鍊錶相比更加靈活,它的每乙個元素除了本身的值以為擁有兩個指標,分別指向上乙個和下乙個節點。維護成本上要高於單向鍊錶。鍊錶的大部分操作依賴於遍歷,這一方面雙向鍊錶會效率會好一些,可以根據查詢下標的位置從而選擇從煉表頭開始遍歷還是從鍊錶尾開始遍歷。返回元素個數 public intsize...