PAT A1052 靜態鍊錶

2022-07-06 21:54:14 字數 1246 閱讀 6477

先來一波溫習:

sort函式排序

bool compare(int a,int b)

return ab,則為降序

一開始的思路是這樣的:

下面是思路實現出來的**(感覺用了不少迴圈,提交後發現確實用時有點多,51ms,可以注意**優化了)

">#includeusing namespace std;

const int maxn = 100010;

struct node list[maxn];

bool cmp(node a, node b)

int main()

if (n == 1)

sort(list, list + n, cmp);

for (int j = 0; j < n; j++)

printf("%d %05d\n", n, list[0].addr);

for (int k = 0; k < n; k++)

return 0;

}

提交結果是21分,部分正確,因此去看演算法筆記裡面的題解和網上的題解,看4分錯在**。

3. 改進

最終ac**

#include#includeusing namespace std;

const int maxn = 100005;

struct node list[maxn];

bool cmp(node a, node b)

int main()

int n, start;

scanf("%d%d", &n, &start);

int addr, data, next;

for (int j = 0; j < n; j++)

int tmp = start;//臨時鍊錶「指標」

int count = 0;//在鍊錶上的節點數

while (tmp != -1)

if (count == 0) printf("0 -1");//新鍊錶沒有節點就輸出0 -1

else

*/printf("%d %05d\n", count, list[0].addr);

for (int k = 0; k < count; k++)

} return 0;

}

發現其實時間是61ms,而且初始化和排序都是整個陣列,所以這道題時間本身就會長一點吧。

PAT A1032 Sharing(靜態鍊錶)

include include include include include include include include include includeusing namespace std define maxn 100010 struct nodenode maxn int main fo...

鍊錶學習 靜態鍊錶

struct linknode 鍊錶在指定位置插入與刪除元素不需要移動元素,只需要修改指標即可,而陣列刪除與加入元素則需要移動後面的元素,鍊錶相對於陣列來講,則多了指標域空間開銷,拿到鍊錶第乙個節點就相當於拿到整個鍊錶 鍊錶的分類 靜態鍊錶,動態鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶,單向迴圈鍊錶,雙向...

靜態鍊錶(陣列 鍊錶和靜態鍊錶的操作)

因為是線性表,不能只講鍊錶,所以今天提一下靜態鍊錶以及陣列 鍊錶 靜態鍊錶之間的對比。陣列基本結構沒得說,插入和刪除的操作也是有的 雖然看著不比較詭異 一般是動態分配乙個足夠長的,記錄有多少個元素後對這個個數進行加減,而不是每插入乙個就動態分配 其實這樣也行,要是不怕麻煩的話 另外在插入刪除操作之後...