微軟面試題 1

2021-05-27 17:43:39 字數 949 閱讀 8662

題:.編寫反轉字串的程式,要求優化速度、優化空間。

分析:構建兩個迭代器p 和 q ,在一次遍歷中,p的位置從字串開頭向中間前進,q從字串末尾向中間後退,反轉字串只要每次遍歷都交換p和q所指向的內容即可,直到p和q在中間相遇,這時迴圈次數剛好等於 字串的長度/2。

實現**:

view plain

/**author: 花心龜

blog:

**/#include 

void reverse(char *_str,int _l) //反轉函式,_l指要反轉字串的長度

}  int main()    

分析:可以構建兩個迭代器p和pp,p一次向移動乙個節點,pp一次移動兩個節點,如果p和pp在某個時刻指向了同乙個節點,那麼該鍊錶就有迴圈鏈結。

實現**:

view plain

/**author:花心龜

blog:

**/#include 

#include 

#define test

struct list_node  

;  list_node *head; //指向頭結點

void list_create()  

p->next = head;  //使尾結點的下乙個結點指標指向頭結點,構成迴圈鍊錶

#ifdef test

p=head;  

for(i=0; i<12&&p!=null; i++)  

printf("\n");  

#endif

}  void cyclelist_test()  

}  printf("是迴圈鍊錶");  

}  void list_destroy()  

free(head);  

}  int main()   

微軟面試題

題目 小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道他的生日是那一天嗎?3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明說 如果我...

微軟面試題

fly.c4 推薦您必看!六.演算法題 說明 這些題就不是什麼花樣了,考的是你的基礎知識怎麼樣。再聰明而沒有實學的人都將會被這些題所淘汰。1.鍊錶和陣列的區別在 2.編寫實現鍊錶排序的一種演算法。說明為什麼你會選擇用這樣的方法?3.編寫實現陣列排序的一種演算法。說明為什麼你會選擇用這樣的方法?4.請...

微軟面試題

1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時乙個小時十五分鐘呢?答 點燃繩子a的兩端,和繩子b的 一端,當a燒完時,b餘下的可以燒半個小時 這時把b的另一端點燃,並開始計時,等b燒完時可確定15分鐘,然後再點燃繩子c 兩端 燒完總時間為1小時...