第八章堆积内容摘要:

maxsize 1) • return 0。 • ++(heaplast)。 • ++(heapsize)。 • heapdata[heaplast] = dataptr。 • ReheapUp(heap, heaplast)。 • return 1。 • } 插入堆積 • void ReheapUp(struct heapTag *heap, int child) • { • int parent。 • void **data, **temp。 • if (child != 0) • { • data = heapdata。 • parent = (child 1)/ 2。 • if (heappare(data[child],data[parent])0) • { • temp=data[parent]。 data[parent]=data[child]。 • data[child]=temp。 ReheapUp (heap, parent)。 • } • } • return。 • } 從堆積移除節點 • int heapRemove(struct heapTag *heap, void **dataptr) • { • if (heapsize == 0) • return 0。 • *dataptr = heapdata[0]。 • heapdata[0] = heapdata[heaplast]。 • (heaplast)。 • (heapsize)。 • ReheapDown(heap, 0)。 • return 1。 • } 從堆積移除節點 • 從堆積 heap 裡移除資料 *dataptr 所指的節點,該指標為資料陣列第零個元素的位址,即 heapdata[0],它是堆積裡最大值者,然後將最後的元素移到陣列第零個元素的位址,進行 ReheapDown() 再堆下作業,使滿足堆積的要求。 ReheapDown() 再堆下函式屬於遞迴函式,一層一層往下堆積,直到最後一個元素那一層時才停止。 最後將 last 及 size 成員值均減一。 傳回 1 值。 若 size 成員值已達 0 值則傳回 0 值。 測試程式 • 上面說明的堆積結構宣告以及相關的函式存入 表頭檔備用。 • 下列的程式 用於測試 表頭檔的函式是否正確無誤。 首先建立一個 heap 堆積,最大元素個數為 16,資料比較函式名稱為 pareInt。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。