作為一個C++初學者,剛剛接觸鏈表的時候非常的難受,感覺聽得稀里糊涂的,后來私下閱讀過很多文章,也看過很多視頻,也算是有一點了解了,
首先明確我這里說的是單向鏈表
(1)鏈表是一種物理存盤單元上非連續、非順序的存盤結構;
(2)資料元素的邏輯順序是通過存盤下一個元素的地址實作的;
在我個人理解上來說
鏈表的結點就是一個結構體
1)首先我們創建一個空鏈表;
struct node{
int data; //資料元素
node *next; //結構體的指標,用于存盤下一個結點的地址
};
int main()
{
node *head=nullptr;
return 0;
}
像這樣,我們就創建了一個空鏈表,這個鏈表的"data"為空,指標next也為空;
2)接下來我們創建一個簡單鏈表;
先定義一個陣列int a[]={100,200,300};
1.尾插法
node *create(const int a[],int n) //函式值回傳型別必須為指標型
{
node *head=NULL;
node *p1; // p1為新建結點
node *p2; // p2為鏈尾結點
for(int i=0;i<n;i++)
{
p1 = new node; //動態申請空間
p1->data=a[i]; //結構體指標的訪問形式
p1->next=NULL;
if(head==NULL) //判斷頭指標是否為空
head=p1; //如果為空將頭指標指向p1所指地址
else
p2->next=p1; //如果不為空,將尾結點的指標只想新建結點
p2=p1; //尾結點始終指向新建結點
}
return head; //回傳所創建鏈表
}
2.頭插法
node *create(const int a[],int n) //函式值回傳型別必須為指標型
{
node *head=NULL;
node *p1; // p1為新建結點
for(int i=0;i<n;i++)
{
p1 = new node;
p1->data=a[i];
p1->next=head; //新建結點的指標始終指向頭指標
head=p1; //之后將頭指標始終指向新建結點
}
return head; //回傳頭指標
}
(2)釋放鏈表
void remove(node *&head) //指標的參考做函式形參
{
node *p; //定義一個結構體指標
while(head)
{
p=head;
head=head->next; //釋放鏈表時的關鍵
delete p; //c++中釋放動態申請堆空間的方法
}
}
(3)遍歷鏈表
void print(node *&head)
{
node *p=head; //這里定義一個指標來遍歷鏈表,防止后續程序還會用到鏈表,所以不直接使用"head"
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
}
這就是鏈表的基本創建及訪問,希望這些基本內容,對大家學習鏈表有所幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/254445.html
標籤:其他
上一篇:論CyberVein在新型智慧城市建設中的應用現狀,讓智慧城市不再“烏托邦”
下一篇:Codeforces Round #698 (Div. 2)-C. Nezzar and Symmetric Array-題解
