专注笔试算法20年(C语言版)
1.C语言实现链表数据的反转({1,2,3,4}->{4,3,2,1}).
int trav(PNode *head){ PNode p_1,p_2,tmp; //判断参数是否有效 if(*head == NULL) return 0; //判断是否少于两个节点 if((*head)->next == NULL) return 1; //处理多余两个节点的情况 p_1 = *head; p_2 = (*head)->next; tmp = (*head)->next->next; do{ p_2->next = p_1; p_1 = p_2; p_2 = tmp; } while (tmp&&((tmp=tmp->next)||1)); //逆序过后设置头指针 (*head)->next = NULL; *head = p_1; //逆序完成 返回 return 1; }
2.一个人可以一次上一个或是两个或是3个台阶,问上到第n阶台阶,有几种方法,C语言实现.
1 #include 2 3 int main(void) 4 5 { 6 7 int f,i,f1=1,f2=2; 8 9 printf("请输入楼梯数"); 10 11 scanf("%d",&i); 12 13 printf("\n"); 14 15 if(i==1) 16 17 {printf("有1种走法");} 18 19 if(i==2) 20 21 {printf("有2种走法");} 22 23 if(i>=3){ 24 25 do{f=f1+f2; 26 27 f1=f2; 28 29 f2=f; 30 31 i--;}while(i-3>=0); 32 33 printf("有%d种走法",f);} 34 35 return 0;}