資料結構演算法1 演算法和演算法分析

2022-07-13 07:36:12 字數 3273 閱讀 2580

最近面試ios實習生。幾次都是敗在資料結構演算法上面了。決定重新撿起大學的課本,複習一下資料結構演算法相關知識。

1、反轉乙個鍊錶。迴圈演算法。

1     list   reverse(list   l)     

13     return   tmp;   

14   }   

2、反轉乙個鍊錶。遞迴演算法。

1     list   resverse(list   l)     

8     return   n;   

9   }   

3、廣度優先遍歷二叉樹。

1     void   bst(tree   t)     

11   }   

----------------------   

1class   node     

5class   queue     else     

17     }   

18     public   tree   deque()     else     

26}  

4、輸出乙個字串所有排列。注意有重複字元。

1char   p;   

2void   perm(char   s,   int   i,   int   n)   

6         return   *str1-*str2;   

7}   

10、求乙個整形中1的位數。

1       int     f(   int     x)         

7             return     n;   

8   }     

11、漢諾塔問題。

1void   tower(n,x,y,z)   

8}   

12、三柱漢諾塔最小步數。

1       int     f3(n)         

8                   f3[n]   =   2   *   f3(n   -   1   )   +   1   ;   

9                     return     f3[n];   

10           }     

11   }     

四柱漢諾塔最小步數。   

1int   f4(n)   

7                 min=2*f4(1)+f3(n-1);   

8                 for(int   i=2;i   b.value)else   

16         }   

17         m=head.next;   

18}14、乙個陣列,下標從0到n,元素為從0到n的整數。判斷其中是否有重複元素。

1int   hasduplicate(int   a,   int   n)   

8}   

17、兩個鍊錶,一公升一降。合併為乙個公升序鍊錶。

1       list   merge(list   a,   list   d)           else             

12                   p   =   p.next;   

13           }     

14             if   (a)   p.next     =     a;   

15           elseif(a1)   p.next   =   a1;   

16             return     q.next;   

17   }     

18、將長型轉換為字串。

1char*   ltoa(long   l)   

5         char*   str=(char*)malloc(n*sizeof(char));   

6         int   j=0;   

7         while(l)   

12         return   str;   

13}   

19、用乙個資料結構實現

1   if   (x   ==   0)   y   =   a;   

2   else   y   =   b;   

1   j   =   ;   

2   y=j[x];   

20、在雙向鍊錶中刪除指定元素。

1void   del(list   head,   list   node)   

9         if(!cur)   return;   

10         list   post   =   cur.next;   

11         pre.next=cur.next;   

12         post.last=cur.last;   

13         return;   

14}   

21、不重複地輸出公升序陣列中的元素。

1       void     outputunique(   char     str,   int     n)         

12                             ++   j;   

13                   }     

14           }     

15   }     

22、面試過程中我還遇到了下面幾題:   

1、如何刪除鍊錶的倒數第m的元素?我的方法是先用pre指標從煉表頭開始步進m,新建pst節點next指標指向頭節點,cur指標指向頭節點,然後pre,cur,post三個指標一起步進,當pre指向鍊錶結尾的時候cur指向倒數第m個元素,最後利用pst指標刪除cur指向元素。   

2、如何判斷乙個字串是對稱的?如a,aa,aba。設定頭尾指標同時向中間比較靠齊直至相遇。   

3、如何利用2函式找出乙個字串中的所有對稱子串?以子串頭指標和尾指標為迴圈變數設定兩個巢狀的迴圈以找出所有子串,對每個子串應用2函式。

資料結構 演算法和演算法分析

一 演算法的基本概念 1.什麼是演算法 演算法 演算法是對特定問題的求解步驟,是指令的有限序列。演算法的特徵 1 演算法有0或多個輸入 2 演算法至少有乙個輸出 3 演算法的每一條指令都可以執行 4 演算法的每一條指令都有確切的定義,沒有二義。5 演算法必須總能在執行有限步以後終止。2.演算法的描述...

資料結構(2) 演算法和演算法分析

資料結構與演算法之間存在著本質聯絡。演算法的定義及特性 演算法是為了解決某類為而規定的乙個有限長的操作序列。乙個演算法必須滿足一下五個重要特性。演算法的時間複雜度 一般情況下,演算法中基本語句重複執行的次數是問題規模n的某個函式f n 演算法的時間量度記作t n o f n 它表示雖問題規模n的增大...

資料結構和演算法分析

1.1本書討論的內容 1.2數學知識的複習 1.3遞迴簡論 了解程式在適當輸入和巨大 輸入時的差別,明白優化代 碼採取適當資料結構的重要 指數 對數 級數 模運 算 歸納法反證法證明 指在函式的定義中使用 函式自身的方法,還較常 用於描述以自相似方法 重複事物的過程。也可 以理解為自我複製的過程。在...