一.帶頭節點的單鏈表。
帶頭結點非空單鏈表
線性表的單鏈表的儲存結構描述:
頭指標為空,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 順序表...