鏈結
串列
的應用
資料結構 鍾宜玲鏈結堆疊與鏈結佇列
top 頂端指標 : NULL 鏈結堆疊 … NULL 鏈結佇列 前端指標 front 尾端指標 rear鏈結堆疊
假設節點有資料欄 data 與鏈結欄 link
加入新資料至鏈結堆疊
若新資料為d,先製作新節點 p :printf(“輸入資料:”);
scanf(“%d”, &d); p=new(); p->data=d; 加入新資料至鏈結堆疊: p -> link = top ; 新節點 p->link = top; d p data link top top = p; …刪除鏈結堆疊的頂端資料
程式片段如下:
p = top; top = top->link ; … NULL top free(p); p鏈結佇列
假設鏈結佇列之節點含資料欄data及鏈結欄link
加入新資料於鏈結佇列的尾端
先製作一新節點 p: printf(“輸入資料:”); scanf(“%d”, &d); /*若新資料為d*/ p=new(); /*分配新節點空間*/ p->data=d; /*新節點資料欄為d*/ … front rear d p NULL data 新節點 link NULL加入節點p至鏈結佇列尾端:
(2) rear改指向新節點p
rear->link = p; rear = p;(1) rear的鏈結欄link改指向新節點p
… front rear d p NULL data 新節點 link NULL考慮新節點加入至空鏈結佇列時,
必須 front 與 rear皆改指向新節點p
front = p;
rear = p; front
rear p ddata NULL
新節點 link NULL
新節點加入至空鏈結佇列
if ( front == NUL L ){ front = p; rear = p; } else { rear -> link = p; rear = p; } 可改寫為: if ( front == NULL ) front = p; else rear -> link = p; rear = p;刪除鏈結佇列的前端資料
… NULL
front
front = front -> link; /*front改指向第二個節點 */
p
free(p); /*歸還原來的前端節點空間*/
rear