資料結構 單鏈表02

2021-09-20 03:31:24 字數 3211 閱讀 1123

將線性表l=(a 0 ,a 1 ,……,a n-1 )中各元素分布在儲存器的不同儲存塊,稱為結點,通過位址或指標建立它們

之間的聯絡,所得到的儲存結構為鍊錶結構。表中元素a i 的結點形式如圖所示。

其中,結點的data域存放資料元素a i ,而next域是乙個指標,指向a i 的直接後繼a i+1 所在的結點。於是,線性表

l=( a 0 ,a 1 ,……,a n-1 )的結構如圖所示。

例 設線性表l=(趙,錢,孫,李,周,吳,鄭,王),各 元素在儲存器中的分布如圖所示。

結點型別描述

typedef int datetype;

typedef struct _node

listnode_t, *linklist;

listnode_t a;

linklist p = &a;

則結構變數a為所描述的結點,而指標變數p為指向此型別結點的指標(p的值為結點的位址),如圖

設p指向鍊錶中結點a

獲取a i ,寫作:p->data;而取a i+1 ,寫作:p->next->data.。 另外,若指標p的值為null,則它不指向任何結點,

此時取p->data或p->next是錯誤的。

• 可呼叫c c語言中malloc()函式向系統申請結點的儲存空間,例如:

• linklist p;

• p = (linklist)malloc(sizeof(listnode_t));

建立單鏈表演算法思路:依次讀入表l=(a 0 ,…,a n-1 )中每一元素a i (假設為整型),若a i ≠結束符(-1),則為a i建立 一結點,然

後插入表尾,最後返回鍊錶的頭結點指標h。

演算法描述

linklist  linklist_create2(void)

header->data = 0;

header->next = null;

r = header;

while(1)

p->data = val; //存入資料

p->next = null;//

r->next = p;//r指向新的節點

r = p; //移動r到鍊錶尾部

} return header;

}

設l=(2,4,8,-1),則建表過程如下:

鍊錶遍歷

void linklist_print(linklist h)

puts("\n");

}

鍊錶查詢-按序號查詢從鍊錶的a 0 起,判斷是否為第i結點,若是則返回該結點的指標,否則查詢下一結點,依次類推。

linklist linklist_get(linklist h, int pos)

while( p->next && index < pos )

if( index == pos)

else

}

鍊錶查詢-按值查詢(定位)
linklist linklist_locate(linklist h, datetype val )

return p;

}

鍊錶的插入:演算法思路:呼叫演算法getlinklist(h, i-1),獲取結點a i-1 的指標p(a i 之前驅),然後申請乙個q結點,存入x,並將

其插入p指向的結點之後。插入時的指標變化如圖

鍊錶的刪除演算法思路:同插入法,先呼叫函式linklist_get(h, i-1),找到結點a i 的前驅,然後如圖所示,將結點a i 刪除之。

else //若p及p->next所在的結點存在

}單鏈表倒置

void linklist_reverse(linklist h)

}

單鏈表的有序插入

int linklist_order_insert(linklist h, datetype val)

p->data = val;

q = h;

while(q->next && q->next->data < val)

p->next = q->next;

q->next = p;

return success;

}

單鏈表的排序

void linklist_sort(linklist h)

}

內容摘取華清創客學院培訓資料,個人水平有限,感謝華清創客學院的指導和幫助。

資料結構單鏈表

初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!2012年3月30日 於大連 include using namespace std typedef struct node linklist,node linklist makelist int n void ...

資料結構 單鏈表

今天浪費了好多時間,也許是心裡想著明天的考試吧 可自己也知道這次的考試,自己畢竟過不了了,只好等到今年11月份,想想那時自己已經大三了 還有那麼多時間嗎!很懊惱今天不知怎麼回事,感嘆環境真的可以影響乙個人,真的可以 把今天的學習筆記寫下來,沒有進行好好的整理,這回單鏈表的功能較多,操作比較散,最後乙...

資料結構 單鏈表

實現乙個單鏈表 1 查詢 查詢第index個節點 查詢指定的元素 2 插入 將指定的元素插入到第index個節點上 3 刪除 將第index個節點刪除 規律 刪除和新增元素前務必儲存兩個元素的位址引用資訊 public class mylinkedlist 記錄鍊錶結構的頭結點位址引用 privat...