C語言中的單鏈表面試題 基礎

2021-08-02 13:17:19 字數 2206 閱讀 4008

從尾到頭列印單鏈表

刪除乙個無頭單鏈表的非尾節點

在無頭單鏈表的乙個節點前插入乙個節點

單鏈表實現約瑟夫環

逆置/反轉單鏈表

單鏈表排序(氣泡排序&快速排序)

合併兩個有序鍊錶,合併後依然有序

查詢單鏈表的中間節點,要求只能遍歷一次鍊錶

查詢單鏈表的倒數第n個節點,要求只能遍歷一次鍊錶

遞迴法,若當前節點不為空,在列印當前節點前列印上乙個節點。

void converseprint(listnode* plist)

}

將當前節點的內容改為下個節點的內容,釋放下個節點,讓當前節點指向下下個節點。

void popnode(listnode* plist)

}

新建乙個節點儲存當前節點的內容,並指向下乙個節點。 

將當前節點改為插入的內容,指向新節點。

void

insertbefore(listnode* plist, datatype x)

void joseph(listnode** pplist, int n)

*pplist = plist;

}

void reverselist(listnode** pplist)

*pplist = newlist;

}

void listbubblesort(listnode* plist)

cur = next;

next = next->next;

}if (exchange ==

0) return;

tail = cur;}}

方法一

- 新煉表段接法

- 接收兩個鍊錶指標,處理有空鍊錶的情況。 

- 建立新煉表頭指標,指向兩煉表頭節內值點較小的的節點。 

- 迴圈,節點小的指標後移,直到節點下一節點大於另一指標或節點為空,tmp 儲存下一節點,當前節點指向另一指標,當前指標賦值為 tmp,如果當前指標為 null,說明合併完成,結束迴圈。 

- 返回新煉表頭指標。 

- 可以總是讓 p1 指向小的,p2 指向大的,迴圈挪 p1,接完後再把小的給 p1,大的給 p2。可以不用比較。(原方法 else 是複製 if 後,1 和 2 換,其實更簡單,看起來多) 

思路圖

listnode* mergelist(listnode* list1, listnode* list2)

listnode* tmp = list1->next;

list1->next = list2;

list1 = tmp;

if (list1 ==

null)

break;

}else

listnode* tmp = list2->next;

list2->next = list1;

list2 = tmp;

if (list2 ==

null)

break;}}

return newlist;

}

方法二

- 新鏈單節點表尾插法

- 新建 newlist = null, 迴圈,每次比較兩指標內容,儲存小的節點,小節點指標後移,小節點尾接到 newlist。 

- 如果有乙個指標為 null,另乙個指標尾接到 newlist,返回 newlist。 

方法三- 介於上兩個方法之間,以頭結點小的為 newlist,另乙個鍊錶每次拿下乙個節點接到 newlist 的合適位置,直到其中乙個指標為空。

listnode* findmidnode(listnode* plist)//mid = total>>1

return plist;

}

listnode* findfromlast(listnode* plist, int n)

while (plist->next != null)

return ret;

}

單鏈表 (面試題)

關於單鏈表的基本操作,之前已經總結過了,那些掌握之後算是了解了單鏈表是什麼?不過現在面試的題中,肯定不會只讓你回答單鏈表的基礎操作,總是會改變一些東西,或是擴充套件一下。下面就是一些關於單鏈表的擴充套件內容 include include include pragma warning disable...

單鏈表面試題

1.倒序列印鍊錶 void reverseprint slistnode pfirst 有兩種方法 1.遞迴操作 2.非遞迴操作 2 非遞迴 slistnode pend slistnode pcur pend null while pfirst pend pend pcur printf d pe...

單鏈表(面試題)

鍊錶反轉思路 1.單鏈表中有效節點的個數 2.查詢單鏈表中弟第k個節點 3.單鏈表的反轉 實現 如下 public class testlink 1單鏈表中有效節點的個數 遍歷得出個數 public static intcount heronode head int count 0 while tr...