C語(yǔ)言程序設(shè)計(jì)[浙江大學(xué)·翁愷]

printf()在使用·時(shí),所有小于int的如:char,short都會(huì)·轉(zhuǎn)化為int,大于int的都會(huì)轉(zhuǎn)化為longlong
如果要以整數(shù)的形式輸入一個(gè)char,是沒(méi)有辦法的,必須先輸入給一個(gè)整數(shù)類(lèi)型,再賦值給char
1、abs( x )函數(shù)
格式:int abs( int i );
作用:求整型數(shù)的絕對(duì)值
例子:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
main(??)
{
int a = 1, b = -2 ;
printf("%d的絕對(duì)值是%d,%d的絕對(duì)值是%d\n", a, abs( a ), b, abs( b ));
}
運(yùn)行結(jié)果為:1的絕對(duì)值是1,-2的絕對(duì)值是2
2、fabs( x )函數(shù)
格式:float fabs( float i ); / double fabs( double x );
作用:求浮點(diǎn)數(shù)的絕對(duì)值
例子:
#include<stdio.h>
#include<math.h>
main(??)
{
float a = 1.4, b = -2.7 ;
printf("%f的絕對(duì)值是%f,%f的絕對(duì)值是%f\n", a, fabs( a ), b, fabs( b ));
}
運(yùn)行結(jié)果為:1.400000的絕對(duì)值是1.400000,-2.700000的絕對(duì)值是2.700000
擴(kuò)展資料:
其他math.h頭文件包含函數(shù)介紹:
1、 三角函數(shù)
double sin(double);正弦
double cos(double);余弦
double tan(double);正切
2 、反三角函數(shù)
double asin (double); 結(jié)果介于[-PI/2,PI/2]
double acos (double); 結(jié)果介于[0,PI]
double atan (double); 反正切(主值),結(jié)果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結(jié)果介于[-PI,PI]
3 、雙曲三角函數(shù)
double sinh (double);
double cosh (double);
double tanh (double);
4 、指數(shù)與對(duì)數(shù)
double frexp(double value,int *exp);這是一個(gè)將value值拆分成小數(shù)部分f和(以2為底的)指數(shù)部分exp,并返回小數(shù)部分f,即f*2^exp。其中f取值在0.5~1.0范圍或者0。
double ldexp(double x,int exp);這個(gè)函數(shù)剛好跟上面那個(gè)frexp函數(shù)功能相反,它的返回值是x*2^exp
double modf(double value,double *iptr);拆分value值,返回它的小數(shù)部分,iptr指向整數(shù)部分。
double log (double); 以e為底的對(duì)數(shù)
double log10 (double);以10為底的對(duì)數(shù)
double pow(double x,double y);計(jì)算x的y次冪
float powf(float x,float y); 功能與pow一致,只是輸入與輸出皆為單精度浮點(diǎn)數(shù)
double exp (double);求取自然數(shù)e的冪
double sqrt (double);開(kāi)平方根
5 、取整
double ceil (double); 取上整,返回不比x小的最小整數(shù)
double floor (double); 取下整,返回不比x大的最大整數(shù),即高斯函數(shù)[x]

變量定義的一般形式就是:類(lèi)型名稱(chēng)+變量名稱(chēng)+;
如:int price;
int amount;
int price,amount

在scanf里讀取什么東西,需在該東西前加&否則無(wú)法讀取
整數(shù)除法會(huì)省略小數(shù)點(diǎn)后面的數(shù),要求有小數(shù)點(diǎn)的數(shù)值,需要使用浮點(diǎn)數(shù)




數(shù)據(jù)類(lèi)型:
1.整數(shù):int,printf(“%d”,...)
scanf(“%d”,...)
2.帶小數(shù)點(diǎn)的數(shù):double,printf(“%f”,...),scanf(“%lf”,...)
3.運(yùn)算符(operator):是指進(jìn)行運(yùn)算的動(dòng)作,比如加法運(yùn)算符“+”,減法運(yùn)算符“-”
算子(operand):是指參與運(yùn)算的值,這個(gè)值可能是常數(shù),也可能是變量,還可能是一個(gè)方法的返回值
4.兩個(gè)整數(shù)的運(yùn)算結(jié)果只能是整數(shù)
整數(shù)運(yùn)算沒(méi)有小數(shù)部分,因此要使用浮點(diǎn)數(shù),若在設(shè)置變量,則變量的賦值有小數(shù),因此用double,而不用int,輸出時(shí),有小數(shù),因此使用%f,而不是%d

一般自左向右
單目+-和賦值=自右向左

賦值運(yùn)算會(huì)把右邊的式子先算完,再來(lái)和左邊的變量結(jié)合,如:
total*=sum+12
total=total*(sum+12)



如果
if(條件成立){
...
}


優(yōu)先級(jí):所有的關(guān)系運(yùn)算符的優(yōu)先級(jí)比算數(shù)運(yùn)算符的低,但是比賦值運(yùn)算符的高




else,if后面可以沒(méi)有大括號(hào),但只有那第一句(;之前)是有效的
注意:寫(xiě)程序是寫(xiě)步驟,而不是寫(xiě)關(guān)系和說(shuō)明。(非常重要)
區(qū)分內(nèi)嵌式和級(jí)聯(lián)

使用級(jí)聯(lián)時(shí):大于,從上往下數(shù)字大到小;小于,從上往下數(shù)字小到大。


平均數(shù)代碼的選擇,一個(gè)判斷做兩次會(huì)浪費(fèi),如下

隨機(jī)數(shù):每次召喚rand()就得到一個(gè)隨機(jī)的整數(shù)

兩種形式:1.i=0;i<n
2.i=1;i<=n

小套路:做求和的程序時(shí),記錄結(jié)果的變量應(yīng)該初始化為0,而做求積的變量時(shí)記錄結(jié)果的變量應(yīng)該初始化為1。

循環(huán)內(nèi)定義


這里while循環(huán)的i雖然也只在循環(huán)內(nèi)使用,但由于進(jìn)入while前需判斷,故應(yīng)在循環(huán)前就定義int=i



如果是在for循環(huán)里面,break后的本輪的i++是不會(huì)做的就直接跳出循環(huán),而continue會(huì)做完本輪的i++再進(jìn)入下一輪

枚舉:

在除號(hào)倆邊有一個(gè)是浮點(diǎn)數(shù),則計(jì)算機(jī)會(huì)把另一個(gè)數(shù)也變成浮點(diǎn)數(shù)
整數(shù)逆序:
d=x%10
ret=ret*10+d
整數(shù)逆序只適用于末尾沒(méi)有0的數(shù)

gcd:最大公因數(shù)
注意 0與一個(gè)數(shù)的最大公約數(shù)是這個(gè)數(shù)本身,所以0與0的最大公約數(shù)是0。





sizeof是靜態(tài)運(yùn)算符它的結(jié)果在編譯時(shí)刻就決定了
不要在sizeof的括號(hào)內(nèi)做運(yùn)算,這些運(yùn)算是不會(huì)做的







八進(jìn)制輸出用%o,十六進(jìn)制用%x
如果賦值帶字母,則小寫(xiě)x就輸出小寫(xiě)的a,大寫(xiě)的X就輸出大寫(xiě)的A









超過(guò)范圍的浮點(diǎn)數(shù):
printf輸出inf表示超過(guò)范圍的浮點(diǎn)數(shù):+-∞
printf輸出nan表示不存在的浮點(diǎn)數(shù)





輸出%得用倆個(gè)%%






承接上文:對(duì)于printf,任何小于int的類(lèi)型會(huì)被轉(zhuǎn)換成int;float會(huì)被轉(zhuǎn)換成double。
但是scanf不會(huì),要輸入short,需要%hd


bool:#include <stdbool.h>
之后就可以使用bool和true、false

x∈(4,6)表示為x>4&&x<6
回憶:邏輯運(yùn)算符<關(guān)系運(yùn)算符,單目>雙目
優(yōu)先級(jí):所有的關(guān)系運(yùn)算符的優(yōu)先級(jí)比算數(shù)運(yùn)算符的低,但是比賦值運(yùn)算符的高


條件運(yùn)算符:1.問(wèn)號(hào)?前是條件,問(wèn)號(hào)后面是條件滿(mǎn)足時(shí)的值,冒號(hào):后面是條件不滿(mǎn)足是的值。

2.條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,但是低于其他運(yùn)算符
3.自右向左結(jié)合

逗號(hào)運(yùn)算符:

目前來(lái)說(shuō)逗號(hào)運(yùn)算符只有在for循環(huán)中使用
for(i=0,j=10;i<j;i++,j--)
函數(shù)是一塊代碼,接受零個(gè)或多個(gè)函數(shù),做一件事情,并返回零個(gè)或一個(gè)值

調(diào)用函數(shù)
1.函數(shù)名(參數(shù)值);
2.()起到了表示函數(shù)調(diào)用的重要作用
3.即使沒(méi)有參數(shù)也需要()


可以賦值給變量;
可以再傳遞給函數(shù);
甚至可以丟棄;



聲明:檢查你對(duì)函數(shù)的調(diào)用是不是對(duì)的,以及和定義匹不匹配。
把函數(shù)的頭取出來(lái)加上分號(hào);就變成函數(shù)原型

上圖最后一點(diǎn)注意
當(dāng)你值和函數(shù)頭里的參數(shù)類(lèi)型不匹配時(shí),數(shù)據(jù)會(huì)發(fā)生混亂



本地變量



1.定義函數(shù)時(shí)后面的()是參數(shù)表,用來(lái)填入?yún)?shù),當(dāng)沒(méi)有參數(shù)時(shí),填(void),或者不填,但是不填表示參數(shù)表未知,并不代表沒(méi)有參數(shù)。最好確認(rèn)沒(méi)有參數(shù)后填進(jìn)void,否則當(dāng)你值和函數(shù)頭里的參數(shù)類(lèi)型不匹配時(shí),數(shù)據(jù)會(huì)發(fā)生混亂。當(dāng)然,int main()同樣
2.在調(diào)用函數(shù)時(shí),括號(hào)里的逗號(hào)不是運(yùn)算符,如:f(a,b),但如果是f((a,b)),那就是了,區(qū)別就是傳了倆個(gè)還是一個(gè)參數(shù)進(jìn)去
3.注意:c語(yǔ)言不允許嵌套定義,一個(gè)函數(shù)里允許放別的函數(shù)的聲明,但不允許放別的函數(shù)的定義。
4.給return返回值時(shí),不要加括號(hào),雖然沒(méi)影響,但是容易誤解return也是定義函數(shù),把參數(shù)i的值傳進(jìn)return
int main()返回return 0;是有意義的,有程序會(huì)查看



數(shù)組


右邊叫右值
賦值號(hào)右邊是讀取,左邊是寫(xiě)入
數(shù)組的單元
1.數(shù)組的每個(gè)單元就是數(shù)組類(lèi)型的一個(gè)變量。
2.使用數(shù)組時(shí)放在【】中的數(shù)字叫做下標(biāo)或索引,下標(biāo)從0開(kāi)始記數(shù)。


這里的下標(biāo)自動(dòng)從0開(kāi)始計(jì)數(shù),故循環(huán)內(nèi)不用初始化cnt,否則無(wú)法定義數(shù)組d

統(tǒng)計(jì)數(shù)的個(gè)數(shù)

數(shù)組運(yùn)算

int count[number];
for ( i=0;i<number;i++ ) {
count[i]=0;
}可以表示為:
int count[n]={};
其中大括號(hào)中第一個(gè)數(shù)字給數(shù)組的第一個(gè)單元賦值,其余沒(méi)寫(xiě)的賦值0

數(shù)組的大小







使用平方根sqrt()必須寫(xiě)入#include <math.h>





a[i,j]=a[j],逗號(hào)運(yùn)算符,從左向右,取逗號(hào)右邊為運(yùn)算結(jié)果
二維數(shù)組的初始化

大括號(hào)中的大括號(hào)也可以不打,二維數(shù)組在內(nèi)存中的排列跟一維數(shù)組是一樣的,將這個(gè)矩陣從左上角到右下角,用這些數(shù)字逐行的填滿(mǎn),為了讓人類(lèi)讀者容易理解,可以加大括號(hào)
tic-tac-toe游戲制作步驟:



行列代碼基本相同

&a==a==&a[0]==&a[1]地址相同
指針p的值是某個(gè)變量的地址
*p是一個(gè)int所以p是一個(gè)指針


以上都不行
地址中變量的地址是堆棧的,先寫(xiě)的變量的地址更高(大),后寫(xiě)的變量地址更低(?。?,且他們是緊挨著的

指針:定義一個(gè)指針要*+一個(gè)變量->*p,這算是一個(gè)指針
int* p=int *p只是星號(hào)位置不同,定義倆個(gè)指針需要倆個(gè)星號(hào)不能理解為int *p,q;而是int *p,*q;



*是一個(gè)單目運(yùn)算符,用來(lái)訪問(wèn)指針的值所表示的地址上的變量
當(dāng)*p作為一個(gè)整體時(shí),可以看作是一個(gè)·整數(shù)
數(shù)組參數(shù):
在函數(shù)參數(shù)表中是等價(jià)的
一般函數(shù)的參數(shù)與調(diào)用他的地方是沒(méi)有聯(lián)系的,指針改變了這種情況


數(shù)組在傳入函數(shù)前后地址沒(méi)發(fā)生改變,但sizeof改變,傳進(jìn)函數(shù)里的數(shù)組的大小是指針的大小,實(shí)際傳進(jìn)后就變成指針了。
故沒(méi)法在函數(shù)里頭用sizeof得出正確的函數(shù)個(gè)數(shù),且在中括號(hào)里定義大小也沒(méi)有用。
在參數(shù)表里把數(shù)組寫(xiě)成指針的樣子也是可以的
64位系統(tǒng)下一個(gè)指針的大小是8個(gè)字節(jié),而一個(gè)int的大小是4個(gè)字節(jié)




要么是指針不可修改,要么是通過(guò)指針不可修改
數(shù)組變量是特殊的指針,其實(shí)就是數(shù)組的第一個(gè)元素的地址當(dāng)然了,其實(shí)這也是一個(gè)Const 類(lèi)型的指針,其實(shí)說(shuō)白了就是一個(gè)常量指針,
所以有以下性質(zhì):
1.數(shù)組變量本身表達(dá)地址,所以
int a[]; int *p=a; //無(wú)需用&取地址值
但是數(shù)組的單元表達(dá)的是變量,需要用&取地址值
a==&a[0]
2.[]運(yùn)算符可以對(duì)數(shù)組做,也可以用指針做:
p[]<? a[0]
3.*運(yùn)算符可以對(duì)指針做,也可以對(duì)數(shù)組做
*a=25;
4.數(shù)組變量是const的指針。所以不能被賦值
int a[] <==>int *const a=



指針應(yīng)用場(chǎng)景
1.交換倆個(gè)變量的值

2.

例子:



注意:定義了指針變量,還沒(méi)有指向任何變量,就開(kāi)始使用指針,這樣是不行的,因?yàn)闆](méi)有指向變量,則這個(gè)指針的隨機(jī)初始值是個(gè)亂起八糟的東西,如果把這些當(dāng)?shù)刂穭t會(huì)指向莫名奇妙的地方,如果*p=12則你是試圖往那個(gè)地方寫(xiě)入12,這樣往往不會(huì)成功,有時(shí)可能會(huì),但要避免這種錯(cuò)誤


給指針+1是讓他指向下一個(gè)單元,給實(shí)際的指針值加上的sizeof的基礎(chǔ)類(lèi)型大小,char為1,int為4

*(p+1)=c【1】=p【1】






int *q-》char *p,*q=0-》p【0】--p【3】=0
一個(gè)q四個(gè)字節(jié),一個(gè)p一個(gè)字節(jié)




下列代碼能知道你的編譯系統(tǒng)有多少空間能被你使用


注意要還空間 free()


free(NULL)不做事情
定義指針初始化為0,由于某些原因?qū)е聸](méi)有malloc,或malloc得到一個(gè)失敗結(jié)果,free(0)與之配合,使程序不會(huì)崩潰,你申請(qǐng)了什么空間,就得還什么,不能free(1)啥的


'\0'=0就是整數(shù)0,與‘0’不一樣


"Hello,"
"World"中間沒(méi)有任何其他符號(hào)
"Hello,
\world"
以下三種數(shù)組初始化類(lèi)型:



用指針定義字符串,這個(gè)字符數(shù)組在地址很小的地方,稱(chēng)為代碼段,只能只讀,不能修改如s【0】=B












函數(shù)名: scanf?
功 能: 執(zhí)行格式化輸入?
用 法: int scanf(char *format[,argument,...]);
scanf()函數(shù)是通用終端格式化輸入函數(shù),它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán)) 讀取輸入的信息??梢宰x入任何固有類(lèi)型的數(shù)據(jù)并自動(dòng)把數(shù)值變換成適當(dāng)?shù)臋C(jī)內(nèi)格式。
其調(diào)用格式為:?????scanf("<格式化字符串>",<地址表>);
【注意】scanf函數(shù)的返回值是重點(diǎn),必須理解。
scanf()函數(shù)返回值分為3種:
(1)返回正整數(shù)。表示正確輸入?yún)?shù)的個(gè)數(shù)。
(2)返回整數(shù)0。表示用戶(hù)的輸入不匹配,無(wú)法正確輸入任何值。
(3)返回-1。表示輸入流已經(jīng)結(jié)束。在Windows下,用戶(hù)按下CTRL+Z(會(huì)看到一個(gè)^Z字符)再按下回車(chē)(可能需要重復(fù)多次),就表示輸入結(jié)束;Linux/Unix下使用CTRL+D表示輸入結(jié)束。
printf函數(shù)介紹就忽略了,不是本題目的重點(diǎn)。
參考代碼:
#include<stdio.h>
int
?main()
{
????int
?a=0,b=0;
????while(~scanf("%d%d",?&a,?&b))???//下面有關(guān)于~的解析
????{
????????printf("%d\n",a+b);
????}????
????return
?0;
}
上述程序正常輸入時(shí),沒(méi)有任何問(wèn)題,比如:
輸入 1 2?打印3
輸入10 20 打印30
有很多讀者對(duì) ~ 不能理解,我就重點(diǎn)介紹一下吧。
(重點(diǎn),重點(diǎn),重點(diǎn)!?。。。。。。。。∽鞴P記了?。。。。?/strong>
關(guān)于~的作用解析:
1、在Windows下,用戶(hù)按下CTRL+Z(會(huì)看到一個(gè)^Z字符),會(huì)停止輸入流,scanf會(huì)返回-1。
2、-1的補(bǔ)碼為11111111 11111111 11111111 11111111?一共4個(gè)字節(jié)。
3、~是C語(yǔ)言中的按位取反,因此~(-1)結(jié)果為00000000 00000000 00000000 00000000剛好為整數(shù)0的補(bǔ)碼。
4、因此當(dāng)輸入Ctrl+Z時(shí),scanf會(huì)返回-1,while(~-1)==while(0),0為假,退出while循環(huán)。


strlen



若比較數(shù)組名
char s1[];
char s2[];
s1==s2;結(jié)果永遠(yuǎn)是flase,因?yàn)閭z個(gè)數(shù)組地址不相同








若*p=strchr(s,'l');p所指的字符串為llo
p=strchr(p+1,'l');在p上再尋找l,現(xiàn)在p指向的字符串為lo
若要把l前的字符串復(fù)制到另一個(gè)字符串里則
*p=strchr(s,'l');
char c=*p;->c為l
*p='\0';
char *t=(char *)malloc(strlen(s)+1);
strcpy(t,s);此時(shí)s所指的字符串就是he了
printf("%s",t);
輸出為he
free(t);
最后一般要把l還回去
*p=c;

尋找時(shí)第二個(gè)忽略字母大小寫(xiě)

























.的優(yōu)先級(jí)高于&


數(shù)組之間不能賦值,但結(jié)構(gòu)之間可以賦值。

結(jié)構(gòu)指針作為參數(shù)比拷貝結(jié)構(gòu)更有效


結(jié)構(gòu)數(shù)組:


可以定義結(jié)構(gòu)中的結(jié)構(gòu)
struct dateAndtime {
struct date sdate;
struct time stime;
}





可以認(rèn)為typedef到新名字Date之間的所有東西簡(jiǎn)化為一個(gè)新的類(lèi)型名字Date

若設(shè)置的很復(fù)雜,可直接看最后一個(gè)單詞,這個(gè)“一個(gè)”單詞才是這個(gè)新類(lèi)型的名字







_func_表達(dá)的是當(dāng)前函數(shù)的名字

如果函數(shù)內(nèi)部存在與全局變量同名的變量,則全局變量被隱藏


函數(shù)結(jié)束以后,那個(gè)本地變量的地址會(huì)分配給下一個(gè)函數(shù)(里面的本地變量使用)



沒(méi)有值的宏


像函數(shù)一樣,不過(guò)靠近函數(shù)名字的圓括號(hào)里面的變量沒(méi)有類(lèi)型,然后再空格后的括號(hào)里面是被替換的東西比如
#define cube(x) ((x)*(x)*(x))
cube(5)調(diào)用時(shí)會(huì)被替換成((5)*(5)*(5))
如果int i;scanf("%d",&i);然后再cube(i)也是可以的
帶參數(shù)的宏

定義宏決定不能在后面加;分號(hào)



如果代碼里面沒(méi)有函數(shù)原型,則你調(diào)用時(shí),系統(tǒng)會(huì)猜測(cè)你這個(gè)調(diào)用的函數(shù)都為int型
編譯單元
一個(gè).c文件是一個(gè)編譯單元
編譯器每次編譯只處理一個(gè)編譯單元

要把該頭文件放在項(xiàng)目里




estern是變量的聲明




%d:







%*[^,]的意思是到,前所有的東西跳過(guò)
%[^,]到字符串前所有東西當(dāng)作字符串賦給變量

很多初學(xué)者會(huì)對(duì)進(jìn)制存在疑惑 比如為什么在十六進(jìn)制存儲(chǔ)中一個(gè)字節(jié)是用兩個(gè)字符來(lái)表示?比如用0a表示10?用03就表示3呢?
因?yàn)橐粋€(gè)字節(jié)8個(gè)比特(8位),就是8個(gè)二進(jìn)制位
四個(gè)二進(jìn)制數(shù)最大表示為15,就是一個(gè)16進(jìn)制數(shù),所以8位可以表示成2個(gè)16進(jìn)制的數(shù)!
所以這么理解:一個(gè)字節(jié)表示8個(gè)二進(jìn)制位 表示2個(gè)16進(jìn)制位
這是從存儲(chǔ)的角度來(lái)看十六進(jìn)制
然后比如要把十六進(jìn)制轉(zhuǎn)換成使十進(jìn)制
例:2AF5換算成10進(jìn)制(比如這里的5占了4位 F5就是占了一個(gè)字節(jié) 所以2AF5占了2個(gè)字節(jié))
用豎式計(jì)算:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192
直接計(jì)算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
要區(qū)分開(kāi)來(lái)理解
————————————————
版權(quán)聲明:本文為CSDN博主「后季暖」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_51981189/article/details/125715833

用>和<做重定向,<把輸入給一個(gè)文件,>把輸出給一個(gè)文件





ptr是你要對(duì)其進(jìn)行操作的文件名,size是這個(gè)文件有多大



























array_at為什么是指針不直接寫(xiě)int?
因?yàn)橹苯觩rintf是無(wú)意義的,沒(méi)有初始化任何值,但如果是指針可以在printf之前,進(jìn)行*賦值



這個(gè)C語(yǔ)言的函數(shù)為什么修改了傳入的指針卻沒(méi)改變main函數(shù)里的值?
head只是局部指針變量,想要在另外一個(gè)函數(shù)中改變,就要用指針的指針
函數(shù)原型修改為: void add(Node **head,int number)
調(diào)用改為: add( &head, number);
賦值改為:*head = p;
在add函數(shù)里的head是指針的指針,它是main函數(shù)中head指針變量的地址

第一種方案:定義結(jié)構(gòu)指針型函數(shù),結(jié)束時(shí)傳head回去,并在主函數(shù)中,head=add();

第二種,數(shù)據(jù)結(jié)構(gòu)


鏈表遍歷

print函數(shù)

搜索


意味著在->左邊的指針不能是NULL
刪除

清除
