線性表鏈式表示和實現

2021-07-31 05:54:43 字數 1934 閱讀 6248

1、我們把儲存資料元素資訊的域稱為資料域,把儲存直接後繼的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。元素(資料元素映像)+指標(指示後繼元素儲存位置)=結點(表示資料元素)

2、n個結點(ai(1<=i<=n))鏈成乙個鍊錶,即為線性表。

3、鍊錶中第乙個結點的儲存位置叫做頭指標。

4、線性表最後乙個指標為空(用null或^表示)。

5、有時為了方便操作會在第一結點前附設乙個頭結點頭結點的資料域可以不儲存任何資訊。

6、頭結點和頭指標的區別:

頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點則是指向頭結點的指標。頭指標具有標識作用因此常用頭指標來做鍊錶的名字。無論鍊錶是否為空,頭指標都不為空。

7、 頭結點放在第一元素的結點之前。

8、/*線性表的單鏈表儲存結構*/

typedef

struct node

lnode,*linklist;

9、/*單鏈表的讀取*/

10、/單鏈表的插入/

status getelem_l(linklist l,int i,int *e)

if(!p||j>i) //若鍊錶末尾p為空

return error; //第i個資料不存在

*e=p->

data; //若查詢成功返回p點的資料

return ok;

}

status insertelem_l(linklist *l,int i,int e)

if(!p||j>i) //鍊錶結點p為空,第i個結點不存在

return error;

s=(linklist)malloc(sizeof(node)); //生成新的結點

s->

data

=e; //將資料元素e賦值給s->data

s->next=p->next; //將p的後繼節點賦值給s的後繼

p->next=s; //將s賦值給p的後繼

return ok;

}

11、/*單鏈表的刪除*/

status deleteelem_l(linklist *l,int i,int *e)

if(!p||j>i) //如果鍊錶末尾為空,第i個結點不存在

return error;

q=p->next; //查詢成功

p->next=q->next;

*e=q->

data;

free(q); //釋放q結點;free的作用是讓系統收回乙個node結點,釋放記憶體

return ok; //返回成功

}

12、/*單鏈表的頭插法,隨機產生n個元素的值,建立帶頭結點的單鏈表*/

status creatlisthead(linklist *l,int n)

}

13、尾插法,隨機產生n個數,建立帶頭結點的單鏈表l

status creatlistwei(linklist *l,int n)

r->next=null; //表示當前結點結束

}

14、/*單鏈表的整表刪除,將l重置為空表*/

status clearlist(linklist *l)

(*l)->next=

null; //頭結點指標域為空

return ok;

}

15、若線性表需要頻繁查詢而很少進行插入和刪除操作時,應該採用順序儲存結構,否則採用單鏈表結構。

線性表鏈式表示詳解

線性表的鏈式表示 鍊錶資料結構 相對於線性表的順序儲存,線性表的鏈式儲存結構,邏輯上相鄰的元素在物理位置上不相鄰,便於進行插入和刪除操作,但同時也失去了順序表可以隨機訪問的優點。線性表的鏈式表示分為三種 單鏈表,迴圈鍊錶和雙向鍊錶 1 單鏈表 元素的儲存單元可以是連續的,也可以不是連續的 每乙個結點...

線性表 鏈式表示形式

好久沒熬夜了 兩天嘿嘿嘿 好久沒摸鍵盤了 乙個星期左右吧 藉著興奮勁,來寫寫部落格,記錄學習的瞬間 剛剛查了一些其他的資料和文章,發現很多都是直接搬過來的,而且還有好多搬錯了 先來看看線性表的定義 乙個線性表是n個資料元素的有限序列,可以表示成 2,3,6,8,9 在稍複雜的線性表中,乙個資料元素可...

線性表(鏈式實現)

背景 今天覆習 以鏈式儲存方式 實現的線性表結構,簡稱為鍊錶。這裡我們只介紹單鏈表 基本理論 實現 鍊錶結點 結點儲存資料的資料型別 public class snode 指標域 public snodenext public snode t data public snode t data,sno...