C 實現單鏈表

2021-10-02 06:32:42 字數 1653 閱讀 1621

寫的方法不全,只是為了方便自己隨時檢視。

#include "pch.h"

#includeusing namespace std;

//定義單鏈表結構

typedef struct lnode lnode;

//頭插法

void list_headinsert(lnode *&l, int n)

for (int i = 0; i < n; i++) }

//尾插法

void list_tailinsert(lnode *&l,int n)

lnode* p; lnode* r;

l = (lnode*)malloc(sizeof(lnode));

r = l;

int i;

int x;

l->next = null;

for ( i = 0; i < n; i++)

r->next = null;

}//按序號查詢元素(帶頭結點)

void queryelembyid(lnode *l, int n)

cout << "第" << n << "個元素的值為:" << l->data;

}//按值查詢

int queryelembyvlaue(lnode* l, int s)

else

} return -1;

}//刪除單鏈表

void clearlist(lnode *&l)

l->next = null;

}//判斷單鏈表是否為空,這裡是帶頭結點的

void isempty(lnode *l)

}//遍歷單鏈表,並輸出

void printlist(lnode *l)

}int main()

這裡 我告訴你zxh 你要好好理解 指標的指標

這裡用的是引用

希望你下次看到的時候,不要忘記了哦

我們為什麼要用值傳遞?

function(int a , int b);

這個函式不會修改 傳遞進來的引數,只是乙個copy

function(int *a,int *b);

他會將位址copy乙份,然後根據位址去找元素,

位址一樣找的當然一樣咯。

放在記憶體裡的東西,你覺得是copy的嗎。是唯一的,authentic懂嗎?

別逼我 跟自己 秀英文。

你再看啊

function(指標) 這裡的引數 我不好舉例, 反正傳入的是乙個指標,

不是 位址。

function(int * a ,int* b)這個傳入的是位址!!

傳入了指標,那麼引數就會copy乙個指標,指標就是乙個放著位址的空間,指標本身也有位址的。懂嗎?白痴。懂了 奧。

copy了這個指標了,然後對它進行操作,等函式結束了,也就釋放掉了。所以沒有卵用。沒有卵用!!!!

要讓它發生改變 就要傳入指標的位址。那怎麼傳入指標位址呢,就用指標的指標咯

int** 指標型別 int**,指標指向的型別int*。

當然這是c語言裡的,但你千萬一定要理解 知道了嗎!!

別辜負了 自己啊 zxh

等你 再過半年 回過來看的時候 希望你記得。!!

C 單鏈表實現

1 單向鍊錶 單向鍊錶 include include class cnode 節點類 class clist 鍊錶類 cnode movetrail cnode pnode 移動到尾節點 return ptmp void addnode cnode pnode 新增節點 else m nodesu...

c 實現單鏈表

include include using namespace std typedef int datatype struct linknode 建立乙個節點 class slist void swap slist s slist const slist s head null tail null ...

單鏈表(C實現)

ifndef list h define list h typedef struct node node typedef struct list list initlist int insertlist list l,void data,int size node findnodebykey lis...