鍊錶的演算法面試題總結

2021-08-13 08:32:28 字數 2570 閱讀 2367

1、單鏈表的建立和遍歷

2、求單鏈表中節點的個數(太簡單,就不寫了)

3、查詢單鏈表中的倒數第k個結點(劍指offer,題15)

4、查詢單鏈表中的中間結點

5、合併兩個有序的單鏈表,合併之後的鍊錶依然有序【出現頻率高】(劍指offer,題17)

6、單鏈表的反轉【出現頻率最高】(劍指offer,題16)

7、從尾到頭列印單鏈表(劍指offer,題5)

8、判斷單鏈表是否有環

9、取出有環鏈表中,環的長度

10、單鏈表中,取出環的起始點(劍指offer,題56)。本題需利用上面的第8題和第9題。

11、判斷兩個單鏈表相交的第乙個交點(劍指offer,題37)

#include 

#include

typedef char elemtype;

/* 1,建立鍊錶,初始化,遍歷

3,找到倒數第k個節點。

4,找到中間節點。

6,逆置要求空間複雜度o(1),時間複雜度o(n)

*//*

建立鍊錶:建立鍊錶增刪

*//**

鍊錶節點

*/typedef struct knodelinknode;

// 建立頭結點

linknode *create()

// 從頭部開始新增節點

void insert(linknode *s,int i)

}// 遍歷節點,並且返回節點長度。

int ergodic(linknode *s)

return

length;

}// 長度

intlength(linknode *s)

return len;

}// 2.1)單鏈表,找到倒數第k個節點。並且輸出。

int find(linknode *s,int k)

s = s->next;

printf("第k個元素是%c\n",s->data);

return1;}

/* 2.2)鍊錶找到倒數第k個節點。

*/int finds(linknode *s,int k)

while(q->next != null && p != null)

printf("中間的節點:%c\n",p->data);

return1;}

// 輸出鍊錶中間節點。

void middle(linknode *s)else

while(t != 0)

printf("這是中間的節點%c\n",s->data);

}// 鍊錶逆置,空間o(1)

/**/

linknode *reverse(linknode *s)

d = r->next; // d 就是為了找到最後乙個節點。讓它的next = null。r->next和最後乙個節點在此時是雙向的。

d->next = null; // 尾節點next為null

r->next = head;

return r;

}// 合併兩個有序鍊錶,非遞迴方法。

void main()

/**

5, 鍊錶的合併。

7,(在不改變鍊錶結構的前提下)逆序輸出單鏈表的值

*/#include

#include

#include

using namespace std;

typedef char elemtype;

typedef struct nodelinknode;

// 建立鍊錶

linknode *create()

// 初始化鍊錶

void init(linknode *s,int k)

}// 遍歷,帶頭結點的。

void pt(linknode *s)

cout<}// 遍歷不帶頭結點的。

void pts(linknode *s)

cout<}//merge 合併有序鍊錶(有序)(帶頭結點的)

linknode *merge(linknode *s,linknode *r)

if(r->next ==

null)

p1 = s->next;

p2 = r->next;

// 確定那個鍊錶,成為新的煉表頭

if(p1->

data

<= p2->

data)else

//合併

while(p1 !=

null

&& p2 !=

null) else

p = p->next;

}//如果有乙個鍊錶為空

if(p1)

if(p2)

return root;

}// (在不改變鍊錶結構的前提下)逆序輸出單鏈表的值

void outputs(linknode *s)

}cout<

data; // 平凡事務

}void main()

鍊錶的面試題總結

鍊錶的面試題總結 鍊錶在面試中是非常容易的考點,所以在這裡總結一下,希望對大家有所幫助 首先,我們給出鍊錶的基本結構,和基本的操作,建立乙個結點,列印鍊錶的結點,尾插法加入結點。include include include typedef int datatype typedef struct s...

面試題總結 鍊錶型別

單向鍊錶的定義如下 struct listnode 往該鍊錶的末尾新增乙個結點的c 如下 listnode addtail listnode phead,int value pnode m pnext pnew return phead 在鍊錶中找到第乙個含有某值的結點並刪除該結點 void rem...

鍊錶的面試題

1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...