資料結構01 順序表 鍊錶實現

2022-09-12 17:18:26 字數 2361 閱讀 9306

概述

這學期初學資料結構,同時學c語言。由於修的二專,沒什麼夥伴可以一塊討論。困惑還是很多的,希望自己可以堅持下來吧。

剛開始學的是線性表。線性表又可以分為順序表和煉表,兩者的區別在於儲存結構不同。

順序表的儲存特點是依次儲存,位址連續。因為位址連續,所以可以隨機訪問。

寫乙個構造體,命名為sqlist。

typedef struct

sqlist;

而鍊錶的特點是任意存放,儲存單元可以是不連續的,通過指標將乙個個元素連線起來。指標是個神奇的東西。。

寫乙個鍊錶構造體,命名為linknode。

typedef struct

node

lnode,*linklist;

顯然,兩者各有優點和缺點。優缺點互補。

順序表插入和刪除

順序表的缺點是插入刪除繁瑣,導致這一致命問題的原因在於依次存放,如果想插入乙個元素,那勢必要將表中該位置以後的元素後移一位。如果想刪除乙個元素,勢必要將表中該位置以後的元素前移一位

int list_insert(sqlist &l,int i,int

e) *q =e;

++l.length;

return0;

}

//

按元素刪除

int list_delete_elem(sqlist &l,elemtype e)

if (j >=l.length)

int *p = &(l.data[j]);

int *q = &l.data[0] + l.length -1;

//刪除元素的後面元素前移

for (++p;p <= q;++p)

--l.length;

return1;

}//按照位置,刪除表中指定位置元素

status list_delete_pos(sqlist &l, int

i)

int *p = &(l.data[i-1

]);

int *q = &l.data[0] + l.length -1;

for (++p; p <= q; ++p)

--l.length;

return1;

}

依次儲存的問題在於,元素之間相互影響,這就好比一支軍隊,排列整齊的一列隊伍,乙個人的變動會影響全域性。

那麼,如果不是依次儲存呢?

鍊錶的插入和刪除

鍊錶的優勢在於任意儲存,形狀不固定。人們將它視為乙個鏈條,相互之間的連線依靠指標。我們老師的比喻比較形象,指標是開鎖的鑰匙,鎖在另乙個位置。乙個元素包括下乙個元素的位址,因此我們進入這個元素的房間,便可以找到這個房間存放的另乙個房間的位址,從而也就找到了下乙個房間。這裡,乙個房間由兩種基本型別組成,乙個是資料,乙個是指標。

那麼,鍊錶如何插入和刪除元素呢?我們想加入乙個元素p,那個先找到加入的位置的前乙個元素a,先使得p存放的位址是a存放的位址,然後使得a存放的位址是p的位址。同理,刪除乙個元素p,先找到加入的位置的前乙個元素a,使得a存放的位址是p的存放的位址。

int list_insert(linklist &l,int i,int

e)

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

error;

s = (linklist)malloc(sizeof

(lnode));

s->data =e;

s->next = p->next;

p->next =s;

return1;

}int list_delete_pos(linklist &l,int

i)

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

error;

q = p->next;

p->next = q->next;

e = q->data;

free

(q);

return1;

}int list_delete_elem(linklist &l,int

m)

if(!(p->next)) return

error;

q = p->next;

p->next = q->next;

e = q->data;

free

(q);

return1;

}

資料結構《順序鍊錶》

include using namespace std template class sqlist template sqlist sqlist int m template sqlist sqlist template void sqlist createlist int n template t...

資料結構 順序表與鍊錶

順序表插入操作 temp seqlist list temp賦值為乙個結構體變數 for i temp length i pos i pos是插入的位置,注意是ta是下標 temp i int node 放新結點 temp length 刪除操作 for int i pos 1 ilength i ...

資料結構之順序表01

順序表對資料的物理儲存結構 要提前申請一整塊足夠大小的物理空間,使用一組位址連續的儲存單元依次儲存表中的資料元素。順序表,順序表儲存資料同陣列非常接近。其實,順序表儲存資料使用的就是陣列 固定或者動態陣列 這裡用的是動態儲存結構來實現,即動態陣列。主要內容包括 順序表的定義及順序表的初始化,順序表的...