小螞蟻學習數據結構(8)——線性結構——線性結構複習

線性結構即將告一段落,來個簡單總結一下。數組

連續存儲(數組)spa

//定義一個數組結構體
struct Arr
{
    int * pBase;  //保存數組的指針
    int len;       //保存數組的長度
    int cnt;       //數組元素的有效個數
};

    對數組的操做,主要體如今數據的移動上。好比在插入一個元素和刪除一個元素的時候,改位置以後的元素要相對應的前移或後移。結構體內須要三個數組的指針,數組的長度,數組中有效元素的個數,經過這三個參數完成對數組的增添,刪除和輸出。.net

離散存儲(鏈表)指針

//建立一個結構體
struct Node
{
    int data;
    struct Node * pNext;
};

    相對於數組來講,鏈表在存儲刪除過程更加的靈活,增添元素和刪除元素,再也不須要對其後的元素進行移動,減小了時間複雜度。建立鏈表須要多建立一個頭指針和頭節點,這樣方便了對鏈表的操做。code


blog

//節點結構體
typedef struct Node
{
    int data;
    struct Node * pNext;
}NODE,*PNODE;
 
//棧結構體
typedef struct Stack
{
    PNODE pTop;
    PNODE pBottom;
}STACT,*PSTACT;

    棧的特性是「先進後出」,全部相對於鏈表來講,棧的功能受到了限制,好比說不能從中間插入和刪除。棧的結構體中有兩個元素,指針棧頂和指針棧底,棧底永遠指向一個無沒有實際意義的元素,這就好像鏈表中的頭節點,都是方便了操做。隊列

隊列 ci

//定義機構體
typedef struct Queue
{
    int * pBash;  //存放數組
    int front;     //隊列第一個元素下標
    int rear;      //隊列最後一個元素的下一個元素的下標
}QUEUE,* PQUEUE;

    隊列的操做要比以前的三種方式都複雜一些,尤爲是要用數組實現靜態隊列的時候,必須是一個循環隊列。結構體中包含三個元素,第一個指針變量保存的是數組的首地址,front是隊列頭部的下標,rear保存的是隊列尾部的下標,隊列的特性是"先進先出",須要注意的是,在判斷靜態隊列是否已滿的狀況,更經常使用的作法是,空出一個存儲單元不使用,判斷【queue -> front == (queue -> rear + 1)%數組長度】便可。一樣的,隊列也不容許在數組的中間進行插入和刪除。get


學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog博客

相關文章
相關標籤/搜索