专注笔试算法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;}

 

posted @ 2017-03-31 23:33  EugeniaGao  阅读(177)  评论(0编辑  收藏  举报