C語言 堆 堆中的路徑

2021-09-26 14:17:24 字數 1246 閱讀 2646

1.題目

將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h[i]到根結點的路徑。

每組測試第1行包含2個正整數n和m(≤1000),分別是插入元素的個數、以及需要列印的路徑條數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。最後一行給出m個下標。

對輸入中給出的每個下標i,在一行中輸出從h[i]到根結點的路徑上的資料。數字間以1個空格分隔,行末不得有多餘空格。

5 3

46 23 26 24 10

5 4 3

24 23 10

46 23 10

26 10

2.分析:建立堆有兩種辦法:(1)乙個乙個相繼插入,不斷維護(2)先按照輸入序列建樹,然後再調整

2.1不斷插入建立樹

#include#include#define maxsize 1003

typedef struct minheap *heap;

struct minheap

;void insert(heap h,int x)

h->data[i]=x;

}heap makeheap(int n)

return h;

//getchar();

}void printheap(heap h,int x)

else

}printf("\n");

}int main()

;heap makeheap(int n)

return h;

//getchar();

}void smallheap(heap h,int root)

h->data[parent]=x;

}void buildheap(heap h)

}void printheap(heap h,int x)

else

}printf("\n");

}int main()

if(x>h->data[parent]) break;//已經找到合適的節點可以替換

else

}h->data[parent]=x;

return maxiterm;

}

C語言堆中的路徑

05 樹7 堆中的路徑 25 point s 將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h i 到根結點的路徑。每組測試第1行包含2個正整數n和m 1000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10000 內的n個要被插入乙個初始...

C 程式設計中的路徑

在讀取或者寫入檔案時,需要知道檔案的路徑,這些檔案路徑怎麼設定呢?首先要分清絕對路徑和相對路徑 一般開啟資料夾,顯示的如下 c program files 判斷該檔案存不存在的 directory.exists c program files 其中 是轉義字元,相當於 所以也可以寫成 directo...

C語言 學習路徑

1.資料表現形式 表現形式分常量和變數兩大類。常量細分為整型常量 實型常量 還分十進位制小數形式和指數形式 字元常量 還分普通字元 轉義字元 字串常量 符號常量 除了這兩大類還有常變數 識別符號。整型常量 如1000,324,0,32423,等 實型常量 十進位制 23.43,0.5464,55.6...