偶發寫了幾個關於鏈表的集合操作的程序,有一些人反映說不是很懂,希望偶能夠解釋一下,當然,
偶的程序進行了一層的封裝,可能理解起來不是很自然,另外程序本身也有部分的不完善,不理解是正常的!
偶粗略的總結了一下,主要是函數的分析,至於main函數,就留給大家細細琢磨吧~~
1.定義一個接點型的數據結構類型
strUCt Node
{
DataType info;
PNode link;
};
2.在用一個LinkType的數據結構將接點的頭和尾封裝一下,即保存頭和尾的指針。
struct LinkType
{
PNode base;
PNode top;
};
3.定義一個接點類型的指針PNode,和一個指向LinkType類型的指針PLinkType
4.我們訪問鏈表、堆棧或者隊列的時候,都要用PLinkType指針,因為這樣可以使我們的層次結構和思維更加的清楚(當然不這樣也可以,但是不是很劃的來)。
5.定義我們的函數
PLinkType CreatePointer(void):創建一個PLinkType類型的接點,用於存放頭和尾的指針,並將它們初始化,都置為NULL
PLinkType CreateHeadNode(PLinkType pltype):創建PNode類型的頭和尾接點,並將它們置為空。
PLinkType push_Type(PLinkType pltype,DataType n):用於設置我們想要的鏈表或者其它類型的數據類型長度,並重新的設置一下我們的尾接點。
PLinkType print_Type(PLinkType pltype):將我們的鏈表輸出,此時的尾指針自減,當頭和尾相等時結束輸出並返回一個PLinkType類型的指針。
PLinkType pop_Type(PLinkType pltype):此函數多余,可以去掉
PLinkType de_Type(PLinkType pltype, DataType j):將鏈表或者是隊列的j個數據從前面輸出來,並將頭指針後移。
PLinkType pop_Stack(PLinkType pltype,DataType j)將堆棧的j個數據從後面輸出來,並將指針前移PLinkType free_all(PLinkType pltype)釋放所有的接點空間
6.main函數主要是調用的switch函數,一個主switch,每個case中間兩個分switch(自然結束就相當於第三個case(0) )這裡面就不用我具體的解釋了吧^_^
7.經過我一寫我發現了很多的不足之處,不知您發現了沒有,呵呵,等我修改好了再告訴你吧~