鍊錶
鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。
鍊錶都有頭指標,一般為heae,存放的是乙個位址。鍊錶節點分為兩類,頭節點和一般節點,頭節點是沒有資料域的。鍊錶的每個節點都分為兩部分,乙個資料域,乙個指標域。
以上內容摘自:
鍊錶分為:單鏈表、迴圈鍊錶、雙向鍊錶。
迴圈鍊錶的最後乙個結點的指標是指向該迴圈鍊錶的第乙個結點或者表頭結點,從而構成乙個環形的鏈;
雙向鍊錶是每個節點包括兩個指標域,分別指向前乙個節點和後乙個節點。
鍊錶部分**解釋:
鍊錶一般用結構體定義:
typedef
struct node linklist;
一般建立鍊錶我們都用typedef struct,因為這樣定義結構體變數時,就可以直接用linklist *a; 定義結構體變數了。
typedef:給變數乙個易記且意義明確的新名字;另一作用是簡化一些比較複雜的型別宣告。
typedef
struct node linklist;
以上**體現了第乙個作用,該語句實際上完成了連個操作:
1)定義了乙個新的結構型別
typedef struct node ;
2)typedef 為這個新的結構起了乙個名字,linklist.
假設p是指向線性表第i個元素的指標,則該節點的資料域可以用p->data來表示,是乙個資料元素;節點的指標域可以用p->next來表示,p->next的值是乙個指標。
初始化乙個鍊錶,n為鍊錶節點個數:
linklist *
creat
(int n)
end-
>next = null;
//結束建立
}
//修改鍊錶節點的值
void
change
(linklist *list,
int n)
if(t !=
null
)else
cout<<
"節點不存在"
<
}//插入鍊錶節點
void
insert
(linklist *list,
int e,
int n)if(
!p || j>i)
return error;
//第i個元素不存在
s =(linklist)
malloc
(sizeof
(node));
//生成新節點
s->data = n;
s->next = p-
>next;
p->next = s;
return ok;
}
以上內容大多來自於部落格: 資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...