鏈式佇列是基於單鏈表的一種儲存表示, 其形狀如下圖所示:
(佇列的隊頭指標指向單鏈表的第乙個結點, 隊尾指標指向單鏈表的最後乙個結點, 注意沒有無用的空[頭/尾]節點)
用單鏈表表示的鏈式佇列特別適合於資料元素變動比較大的情況, 而且不存在佇列滿而產生溢位的情況;
鏈式佇列結點構造:
[這次我們將節點構造成了類linkqueue的巢狀類]
struct chainnode
type data;
chainnode *next;
};
鏈式佇列構造:
template class linkqueue
type data;
chainnode *next;
};private:
chainnode *m_front; //隊首指標[注意不是指向乙個無用的空節點]
chainnode *m_back; //隊尾指標[注意不是指向乙個無用的空節點]
};
佇列的構造與析構:
template linkqueue::linkqueue()
template linkqueue::~linkqueue()
佇列的四大操作:
//入隊, 這是鏈式佇列的關鍵
template void linkqueue::push(const type &data)
else
}
//出隊
template void linkqueue::pop()
//取隊首元素
template const type &linkqueue::front() const
//取隊尾元素
template const type &linkqueue::back() const
清空佇列與判空操作:
template void linkqueue::makeempty()
}
template bool linkqueue::isempty() const
輸出佇列所有元素(以做測試
):
template ostream &operator<
return os;
}
附-測試**
:
int main()
cout << queue << endl;
cout << queue.front() << endl;
queue.pop();
cout << queue.front() << endl;
cout << queue.back() << endl;
cout << queue << endl;
linkqueuecqueue;
cqueue.push('a');
cout << "cqueue.front = " << cqueue.front() << endl;
cout << "cqueue.back = " << cqueue.back() << endl;
cqueue.pop();
cout << cqueue << endl;
trycatch(const std::exception &e)
return 0;
}
資料結構鏈式佇列
對佇列進行以下操作 1.入佇列 2.出佇列 3.取隊首元素 佇列先進先出,要想實現入佇列,從隊尾插入元素 要想實現出佇列,從隊首刪除元素。在這裡,我們定義頭尾指標,首先對空佇列插入元素,讓頭指標等於尾指標,如果非空,依然讓頭指標指向隊首,尾指標指向要插入的元素。刪除元素時,直接讓頭指標指向下乙個元素...
資料結構之鏈式佇列
我們實現了順序佇列,包括優化,現在我們再來學習下鏈式佇列。注 這裡還是要包含前面我們實現的鏈式鍊錶的標頭檔案和實現檔案。第十個例子,鏈式佇列的實現 標頭檔案 ifndef linkqueue h define linkqueue h typedef void linkqueue linkqueue ...
c 資料結構 鏈式佇列
1.標頭檔案 includeusing namespace std struct linknode linknode const int x,linknode ptr null date x link ptr class linkedqueue 建構函式 構造空佇列 void makeempty 將...