線性表的鏈式表示(單鏈表)

2021-07-29 17:50:25 字數 1288 閱讀 1757

鍊錶的好處在於插入和刪除元素時只需改變指標的指向,減少操作次數。鍊錶的儲存結構可以是順序的(靜態鍊錶)也可以是無序的。缺點是隨機訪問時需要遍歷整個表。本文用無序的儲存結構實現了單鏈表。

//線性表的鏈式表示(單向鍊錶)

//lovesunmoonlight

#include#include#include#includeusing namespace std;

ofstream out;

typedef struct elemtype

;typedef struct lnode

lnode,*linklist;

bool getelem_l(const linklist& l,int i,elemtype& e)

e=p->data;

return true;

}//在第i個位置插入,核心是修改第i-1個位置節點的指標域

bool listinsert_l(linklist& l,int i,elemtype e)

if(!p||j>i-1)

return false;

lnode* s=(linklist)malloc(sizeof(lnode));

s->data=e;

s->next=p->next;

p->next=s;

return true;

}bool listdelete_l(linklist& l,int i,elemtype& e)

if(!p||j>i-1)

return false;

lnode* q=p->next;

e=q->data;

p->next=q->next; //修改i-1位置的指標,指向被刪除節點的下乙個位置

free(q); //釋放節點空間

return true; }

//輸入資料

void input(lnode* &p)

//生成長度為n的鍊錶(逆序)

void createlist_l(linklist& l,int n)

}//輸出

void output(const linklist& l)

} //判斷鍊錶是否為空

bool isempty_l(const linklist& l)

int main()

{ out.open("result.txt");

//初始化表

linklist l;

createlist_l(l,10);

out<<"initialized: "<

線性表的鏈式表示 迴圈單鏈表(C )

迴圈單鏈表和單鏈表的區別在於,表中的最後乙個結點的指標不是null,而改為指向頭結點,從而整個鍊錶形成乙個環。迴圈單鏈表可以從表中任意乙個結點開始遍歷整個鍊錶。不僅可以設定頭指標,還可設定尾指標,對於表頭與表尾進行操作都只需要o 1 的時間複雜度 迴圈單鏈表中結點型別的描述如下 typedef st...

線性表的鏈式表示 雙鏈表(C )

由於單鏈表結點中只有乙個指向其後繼的指標,使得單鏈表只能從頭結點依次順序地向後遍歷。訪問後繼結點的時間複雜度為o 1 訪問前驅節點的時間複雜度為o n 為了克服單鏈表的上述缺點,引入了雙鏈表,雙鏈表結點中有兩個指標prior和next,分別指向其前驅節點和後繼結點,使得訪問前後結點的時間複雜度都為o...

線性表的鏈式表示

上篇文章是線性表的順序表示,本篇便是線性表的鏈式表示。主函式的步驟包括,輸入線性表資料,對鍊錶的刪除,插入。利用指標進行對鍊錶的訪問。同時為了增加程式可讀性,將結構體定義為lnode,linklist。include 線性表的鏈式表示 using namespace std typedef stru...