C C 線性表的表示和實現

2021-10-03 08:59:05 字數 2956 閱讀 8196

一、順序表的表示和實現

線性表的順序表示指的是用一組位址連續的儲存單元依次儲存線性表的資料元素,這種儲存結構是一種隨機訪問的儲存結構

1.線性表的動態分配順序儲存結構

#define true

1#define false

0#define ok

1#define false

0#define infeasible-1

#define overflow-2

typedef int status;

//本文用整型資料型別進行實驗

#define list_init_size

100//線性表儲存空間的初始分配量

#define listincrement

10//線性表儲存空間的分配增量

typedef int elemtype;

typedef struct

sqlist;

2.順序表的構造、插入、刪除、查詢

status initlist_sq

(sqlist &l)

//構造乙個空的線性表

status listinsert_sq

(sqlist &

l, int i,elemtype e)

//在順序表l中第i個位置之前插入元素e

q=&(

l.elem[i-1]

);//q為插入位置

for(p=&(

l.elem[

l.length-1]

);p>=q;

--p)

*(p+1)

=*p;

//插入位置及以後的元素右移

*q=e;++l

.length;

//表長加1

returnok;

}status listdelete_sq

(sqlist &

l, int i,elemtype &e)

//在順序表l中刪除第i個元素,並用e返回其值

status locateelem_sq

(sqlist l

,elemtype e,

status

(* compare)

(elemtype,elemtype)

)

二、線性鍊錶的表示和實現

線性表的鏈式儲存結構的特點是用一組的任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的)

1.線性表的單鏈表儲存結構

#define true

1#define false

0#define ok

1#define false

0#define infeasible-1

#define overflow-2

typedef int status;

//本文用整型資料型別進行實驗

typedef int elemtype;

typedef struct list

list;

2.單鏈表的構造、插入、刪除、逆置

list *

creat

(void

)//單鏈表的構造

else

} p-

>next=

null

;return head;

}status listinsert_l

(list &

l,int i,elemtype e)

//在單鏈表第i個元素前插入元素e if(

!p || j>i-1)

return

error

; s=

(list)

malloc

(sizeof

(list));

//生成新結點

s->data=e;

s->next=p-

>next;

p->next=s;

returnok;

}status listdelete_l

(list &

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);

returnok;

}status listoppose

(list *l)

//單鏈表的就地逆置

returnok;

}

三、c++標準模板庫(list模板類)

list 模板類在 list 標頭檔案中宣告,表示雙向鍊錶;即除了第乙個和最後乙個元素外,每個元素都與前後的元素相連線,意味著可以雙向遍歷鍊錶。實現元素的快速插入和刪除

線性表的鏈式表示和實現

標頭檔案 函式的宣告 include include include include typedef int elemtype typedef struct node listnode,linklist listnode鍊錶的結點型別,linklist指向鍊錶結點的指標型別 void initlis...

線性表的鏈式表示和實現

線性表的鏈式表示和實現 include include include exit 等 typedef int status define overflow 2 define error 0 define ok 1 線性表的單鏈表儲存結構 struct lnode typedef lnode link...

線性表的順序表示和實現

1 線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表就是n個資料元素的有限序列。儲存空間是連續變化的 線性表的順序表示和實現 include include define list init size 10 define listincrement 10 define elemtype ch...