#include
#include "stdlib.h"
structnote ;
int main()
else
p1=p2;
}struct
note *temp;
temp=(struct
note*)malloc(sizeof(struct
note));
temp->dote=11;
temp->next=null; //將要輸入的輸入到尾部
p1->
next
=temp;//新節點的替換尾部節點 尾部節點預設為空的
p1=temp;
//增加乙個節點按順序乙個節點
struct
note *zeng,*zeng1;
zeng1=head;
zeng=(struct
note*)malloc(sizeof(struct
note));
zeng->dote=5;
zeng->
next
=null
;//實現過程先儲存head值用於以後的輸出
while
(head!=
null
) head=head->next;
}head=zeng1;
//刪除
struct
note *jian;
jian=(struct
note*)malloc(sizeof(struct
note));
jian->dote=5;
jian->next=null;
while (head!=null)
head=head->next;
}head=zeng1;
while (head!=null)
return0;}
實現的流程 實現賦值
第一步 建立結構體 結構體中寫入元素並且建立乙個結構體型別的指標
第二步 在主函式中建立3個結構體型別的指標
head 我叫它為頭指標
p1 我叫它儲存位址指標
p2 我叫它開闢空間儲存值指標
並且全部賦值為null (個人的xcode的要求不然報錯 其他可能不同)
第三步 利用迴圈進行賦值
將p2開闢空間的指令寫到迴圈裡面 方便每次迴圈都再記憶體中開闢乙個新的空間
首次迴圈 利用空 判斷把第一次開闢的空間給頭指標
每次迴圈結束時 把 本次迴圈新開闢的空間給p1
第二次迴圈開始 用p1中 的指標儲存新的指標 (這樣實現了 上個p1中的指標儲存了下乙個的p2的位址 而第乙個位址 head p1相同 從而head能夠利用迴圈 不斷找到位址)本質上市乙個標頭檔案 標頭檔案包含下個乙個空間的位址 而下乙個空間的位址又包含另提供空間的位址 雖然都是用標示符相同的指標去接收 但是每一次p2被初始化空間 所對應的位址是不同的 即每一次迴圈都有新空間建立 而乙個新空間被上乙個空間所指向 其又指向的下乙個空間 (實在不理解的話 不要去想座標直接想著位址)
實現輸出
用while 判斷標頭檔案是否為null
如果不為空值
輸出該空間儲存的資料 然後將其儲存的空間的位址賦予給它 再一次進入迴圈一直到為空
實現插入和刪除:
在進行這個步驟之前 首先要對鍊錶有個感性的認識
0->0->0->
如圖可以粗略的標示鍊錶 0-> 標示這煉表上的乙個節點 0可以理解為儲存的資料 ->可以理解我結構體中儲存的結構體變數 該變數的作用是用來儲存下個變數的位址(為啥能實現? 其實仔細觀察下賦值時候的迴圈結構 發現第二次迴圈的時候 才將第二次獲得的空間位址給了初始的接受位址指標中的結構體變數)
基於此的認識 如果要實現增加或者刪除 只要把你要改變的輸出 通過建立結構體變數 開闢空間 賦值。。 包裝成 0->的形式 然後再講這個形式插進去 或者取出來就行了 具體的實現就是 讓改變位置的前乙個節點的-> 指向新的節點 新的節點->指向下乙個節點 這一點看我上面的**很容易的實現
鍊錶 建立刪除增加遍歷
linked list 建立鍊錶 include include include struct listnode void createlisthead listnode head,int n p next null 遍歷整個表 void printflist listnode head 刪除整個表...
鍊錶的建立以及鍊錶節點的增加和刪除
單鏈表的建立過程有以下幾步 1 定義鍊錶的資料結構 2 建立乙個空表 3 利用malloc 函式向系統申請分配乙個節點 4 將新節點的指標成員賦值為空。若是空表,將新節點連線到表頭 若是非空表,將新節點接到表尾 5 判斷一下是否有後續節點要接入鍊錶,若有轉到3 否則結束 單鏈表的輸出過程有以下幾步 ...
鍊錶的簡單操作 建立,輸出,插入,刪除
include include define len sizeof struct student int n 0 節點數量 struct student head struct student creat void p2 next null return head void add int n 插入...