第二章 線性表 單鏈表

2021-09-14 07:05:07 字數 2535 閱讀 8703

一.帶頭節點的單鏈表。

帶頭結點非空單鏈表

線性表的單鏈表的儲存結構描述:

頭指標為空,l=null(不帶頭結點的單鏈表為空)。

l->next=null;(帶頭結點的空單鏈表l)。

p結點的資料域值:p->data;

p結點的後繼結點:p->next;

插入操作。單鏈表插入操作的主要步驟:

1.確定插入位置(找到插入位置的前驅結點).

2.產生待插入的新結點。

3.修改鏈指標,使新結點鏈如單鏈表的指定位置。

listinsert_l(&l,i,e)的實現。

操作要求:在帶頭結點的單鏈表l中第i個元素ai之插入元素值為e的結點。其中1<=i<=n+1;

1.找到第i個結點的前驅結點(即第i-1個結點)

p=l;j=0;

while(p&&jnext;

j++;

}

2.產生資料域值為e的新結點s.

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

s->data=e;

3.修改鏈指標.

s->next=p->next;

p->next=s;

實現演算法;

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

if(!p||j>i-1)return error;

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

if(s==null) return overflow;

s->data=e;

s->next=p->next;

p->next=s;

return ok;

}

刪除操作刪除操作listdelete_l(&l,i,&e)

操作要求:刪除帶結點的單鏈表l中的第i個元素,並用e返回值,1<=i<=n)

1.找到第i個結點的前驅結點(即第i-1個結點)

p=l;j=0;

while(p->next&&jnext;

++j;

}

2.修改鏈指標(使待刪結點從鏈中脫離)

q=p->next;

p-next=q->next;

e=q->data;

3.釋放空間

free(q);
實現演算法:

status listdelete_l(linklist&l,int i,elemtype&e)

if(!(p->next)||j>i-1) return error;

q=p->next;

p->next=q->next;

e=q->data;

free(q);

return ok;

}

二.不帶頭結點的單鏈表;

插入操作:

操作要求:在不帶頭結點的單鏈表中第1個結點之前插入新元素e.

刪除操作操作要求:在不帶頭結點的單鏈表中刪除第1個元素。

status listdelete_ln(linklist&l,elemtype&e)

}

資料結構總結 第二章 線性表 單鏈表

單鏈表的儲存結構 lnode表示乙個單一的結點 linklist表示頭指標,指向乙個單鏈表的頭結點,頭結點一般為空!typedef struct lnode lnode,linklist 初始化 status initlist linklist l 取值 status getelem linklis...

第二章 線性表

定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...

第二章線性表

2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...