線性表:n個資料元素的有限序列。一般指邏輯結構上的線性結構。當n=0時為空表。——棧、佇列、串。
線性表的特點:
1)對於同一線性表的各資料元素必定具有相同的資料型別和長度;
2)資料元素之間的相對位置是線性的。
鍊錶(linked list)
:鏈結方式儲存的線性表。
1)用一組任意的儲存單元來存放線性表的結點;
2)在儲存每個結點值的同時,必須儲存指示其後繼結點的位址。
單鏈表(single linked list):每個結點只有乙個鏈域的鍊錶。
資料域:儲存資料元素資訊的域。
指標域:儲存直接後繼儲存位置的域。
由於開始結點無前驅,故設頭指標head指向開始結點。
終端結點無後繼,故終端結點的指標域為空,即null。
在單鏈表中,取得第i個資料元素必須從頭指標出發尋找,因此,單鏈表是非隨機訪問的儲存結構。
在單鏈表的第乙個結點之前附設乙個結點,稱為頭結點。頭結點的指標域儲存指向第乙個結點的指標。
/*輸出:*位置約定:第m個,以0開始計數。
*位置為m,以1開始計數 */
#include
#include
/*鍊錶節點
*/struct
node;/*
反轉單鏈表,分別用3個指標,指向前乙個,當前,下乙個
* 修改煉表頭(指標),要用指標的指標
* 通過函式的方式修改指標,要用指標的指標 */
static
void reverse(struct node**head_ref)
*head_ref =prev;
}
//使用遞迴的方法
static
struct node* reverserecall(struct node*head)
//新增資料,頭部插入
void push(struct node** head_ref, int
new_data)
//列印鍊錶
void printlist(struct node*head)
}int length(struct node*head)
returnn;}
void removehead(struct node**head_ref)
*head_ref = (*head_ref)->next;}/*
不知道節點數n,只遍歷一次就求出中間節點
*q:當單鏈表長度為0時,報錯 */
void searchmid(struct node* head, struct node**mid)
*mid =p1;}/*
method1: 找出鍊錶倒數第m個元素
*當m=0時,返回鍊錶最後乙個元素
*先求出鍊錶的總長度len,然後順序變數求出位置在len-m的元素 */
node* searchlastmelement1(struct node* head, int
m)/*
method2: 找出鍊錶倒數第m個元素
*當m=0時,返回鍊錶最後乙個元素
*當前位置指標p,指向第m個元素的指標pm,
*確保兩個指標之間相差m個元素,然後以同樣的速度移動它們
*當pm到達鍊錶末尾時,p指標就是指向倒數第m個元素了 */
node* searchlastmelement2(struct node* head, int
m)
while(pm->next != null) //
同樣的速度移動指標p和pm
returnp;}
intmain()
80 100 60 85 15 4 20******************************
reversed linked list
20 4 15 85 60 100 80
******************************
reverserecall linked list
80 100 60 85 15 4 20
******************************
length of linked list: 7
******************************
removehead test:
100 60 85 15 4 20
******************************
searchmid test: 85
******************************
searchlastmelement2 test: the last 5 element is 100
******************************
searchlastmelement2 test: the last 5 element is 100
資料結構單鏈表
初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!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...