線性表的定義與操作 鏈式表

2021-07-23 09:01:53 字數 2134 閱讀 9500

/*線性表的定義與操作---鏈式表*/

/*定義狀態標記*/

#define ok 1

#define error 0

typedef int status;/*定義程式返回狀態值*/

typedef int elemtype;/*定義元素型別*/

/*定義乙個表結點*/

typedef struct lnodenode,*

list;

/* 初始化順序線性表 */

/*建立乙個帶有頭結點的空鍊錶*/

status initlist(list

*l) (*l)->next=

null; /* 指標域為空 */

return ok;

}/*求表長 */

int listlength(list l)

return j;

}/*查詢:

1.按序號查詢 用e返回l中第i個資料元素的值 */

status getelem(elemtype *e,list l,int i)

if(!p || j>i)/*第i個結點不存在*/

return error;

*e = p->

data;/*取第i個結點中資料*/

return ok;

}/*查詢:

2.按資料元素查詢,並返回該結點*/

list getelem(elemtype e,list l)

/*單鏈表第i個資料插入結點的演算法思路:

*1.宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;

*2.當j < i時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下一結點,j累加1;

*3.若到鍊錶末尾p為空,則說明第i個元素不存在;

*4.否則查詢成功,在系統中生成乙個空結點s;

*5.將資料元素e賦值給s->data;

*6.單鏈表的插入標準語句s->next=p->next; p->next=s;

*7.返回成功。

*//*帶頭結點的插入:

*初始條件:l已經存在,且1=status listinsert(elemtype e,int i,list

*l) else

if(p==

null

|| j>i-

1)/*第i-1個結點不存在,不能插入*/

return error;

q = (list)malloc(sizeof(node));

q->

data

= e; /*申請填裝新結點*/

q->next = p->next;

p->next = q;/*新結點插入在第i-1個結點的後面*/

return ok;

}}/*帶頭結點的刪除:

刪除l中的第i個結點,並用e返回其值,l的長度減1*/

/**********************************

*單鏈表刪除第i個資料結點的演算法思路:

*宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;

*當j < i時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下乙個結點,j累加 1;

*若到鍊錶末尾p為空,則說明第i個元素不存在;

*否則查詢成功,將欲刪除的結點p->next賦值給q;

*單鏈表的刪除標準語句p->next=q->next;

*將q結點中的資料賦值給e,作為返回;

*釋放q結點;

*返回成功。

**********************************/

status listdelete(list

*l,int i)

else

if(p ==

null

|| j>i-

1)/*判斷第i-1個結點是否存在*/

return error;

q = p->next;/*q指向第i個結點*/

if(q ==

null) /*判斷第i個結點是否存在*/

return error;

p->next = q->next;/*從鍊錶中刪除 */

free(q);/*釋放被刪除的結點*/

return ok;

}}

鏈式線性表

2013 03 23 00 14 39 上學期的時候就大致看了資料結構與演算法分析的了,但感覺收穫比較少,總結原因是程式設計實踐少了,所以今年趁著老師上課,就多進行一些 的實踐,也準備拿一些acm的題目來練練。中午的時候就將鏈式表的 打了一遍,現在貼上來分享。為了節省時間,我的注釋也相對較少,有不懂...

線性表的定義與操作

線性表的定義與操作 順序表 typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 b...

線性表定義與操作 順序表

typedef int position typedef struct lnode list struct lnode 初始化list makeempty 查詢 define error 1 position find list l,elementtype x 插入bool insert list ...