再去一些大公司面試時(shí)寿酌,總喜歡去先考一些基礎(chǔ)的算法滔韵,不多說(shuō)了级及,直接上代碼幾個(gè)比較基礎(chǔ)的算法代碼:
//冒泡排序(相鄰交換棚亩,除了最后一個(gè))
voidmaopaoSort(){
intnum[6];
printf("請(qǐng)輸入6個(gè)數(shù):");
for(inti =0; i<6; i++) {scanf("%d",&num[i]);}
for(inti =0; i <6; i++) {
for(intj = i; j <5; j++) {if(num[i] > num[j]) {inttemp = num[i];num[i] = num[j];num[j] = temp;
}}}
printf("排序后為:");
for(inti=0; i <6; i++) {printf(" %d",num[i]);}
}
//選擇排序(每一次找出最大或者最小的元素,比較除了當(dāng)前的自己)
voidselectSort(){
intnum[6];printf("請(qǐng)輸入6個(gè)數(shù):");
for(inti =0; i<6; i++) {scanf("%d",&num[i]);}
for(inti =0; i <5; i++){for(intj =i+1; j <6; j++){if(num[i] < num[j]){
inttemp = num[i];num[i] = num[j];num[j] = temp;}}}
printf("排序后為:");
for(inti=0; i <6; i++) {printf(" %d",num[i]);}
}
//判斷是否是回文
voidhuiwen(){
intn =1111221111;intp = n;intk =0;
while(p!=0) {k=k*10+p%10;p=p/10;//出去已經(jīng)處理的余數(shù)(也就是最后一個(gè)數(shù))
}if(k==n) {printf("%d是回文",n);}else{printf("%d不是回文",n);}}
//反轉(zhuǎn)鏈表(鏈表是一種物理存儲(chǔ)單元上非連續(xù)拼卵、非順序的存儲(chǔ)結(jié)構(gòu)奢浑,數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成腋腮,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成雀彼。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域)
//定義鏈表
structnode{intval;structnode*pNext;};
//生成鏈表
structnode*gen(){structnode*pHead =NULL;
for(inti =10; i >0; i--){structnode* p = (structnode*)malloc(sizeof(structnode));p ->val= i;p ->pNext= pHead;pHead = p;}returnpHead;}
//打印鏈表
voiddisplay(structnode*pHead){while( pHead !=NULL){printf("%d ", pHead->val);pHead = pHead->pNext;}printf("\n");}
#pragma下面是實(shí)現(xiàn)反轉(zhuǎn)列表的幾種方式
//1低葫、遞歸實(shí)現(xiàn)
structnode* reverse(structnode*pHead){if(pHead ==NULL|| pHead ->pNext==NULL){returnpHead;}
structnode*p = pHead ->pNext;structnode*pNewHead =reverse(p);p ->pNext= pHead;
pHead ->pNext=NULL;returnpNewHead;}
intmain(intargc,constchar* argv[]) {structnode*pHead =gen();display(pHead);pHead =reverse(pHead);
display(pHead);return0;}