題:.編寫反轉字串的程式,要求優化速度、優化空間。
分析:構建兩個迭代器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小時...