當前位置:學問君>學習教育>考研>

筆試面試題—軟件測試工程師

學問君 人氣:6.57K

導語:本站小編整理了筆試面試題—軟件測試工程師,歡迎閱讀!

筆試面試題—軟件測試工程師

試題1.在一個長度爲n的.順序存儲線性表中,向第i個元素(1≤i≤n+1)之前插入一個新元素,需要從後往前依次後移幾個元素?刪除第i個元素時,需要從前向後前移幾個元素?

分析:考察線性表中順序存儲的特點。

答案:n-i+1,n-i

試題2.已知鏈表的頭結點head,寫一個函數把這個鏈表逆序。

分析:考察線性表中鏈式存儲反轉算法。

答案:

01. void List::reverse()

02. {

03. list_node * p = head;

04. list_node * q = p->next;

05. list_node * r = NULL;

06. while(q){;

07. r= q->next;

08. q->next = p;

09. p= q;

10. q= r;

11. }

12. head->next = NULL;

13. head = p;

14. }

試題3.找出單向鏈表中的中間結點。

分析:兩個指針,一個步長爲1,另一個步長爲2。步長爲2的走到底後步長爲1的正好到中間。

答案:

01. list_node * List::middleElement()

02. {

03. list_node * p = head;

04. list_node * q =head->next;

05. while(q){;

06. p= p->next;

07. if(q)q=q->next;

08. if(q)q=q->next;

09. }

10. }

試題4.如何檢查一個單向鏈表上是否有環。

分析:同樣兩個指針,一個步長爲1,另一個步長爲2,如果兩個指針能相遇則有環。

答案:

01. list_node * List::getJoinPointer()

02. {

03.

04. if(head == NULL ||head->next == NULL)return NULL;

05. list_node * one = head;

06. list_node * two =head->next;

07. while(one != two){

08. one =one->next;

09. if(two)two=two->next;

10. elsebreak;

11. if(two)two=two->next;

12. elsebreak;

13. };

14. if(one == NULL || two ==NULL)return NULL;

15. return one;

16. }