給定一個鏈表,判斷該鏈表是否為回文結構。回文是指該字符串正序逆序完全一致。如當輸入鏈表 {1,2,3,2,1} 時,斷定是回文結構,輸出True。
代碼實現
C語言代碼:
boolisPail(structListNode*head){ //writecodehere if(head==NULL||head->next==NULL) returntrue; //第一步:定義快慢指針,并將其指向頭結點 structListNode*slow,*fast; slow=head; fast=head; //第二步:快指針每次走兩步,慢指針走一步 while(fast!=NULL&&fast->next!=NULL){ fast=fast->next->next; slow=slow->next; } //第三步:快指針指向慢指針后繼結點,慢指針斷鏈 fast=slow->next; slow->next=NULL; structListNode*p; p=NULL; //第四步:反轉后半部分的鏈表 while(fast!=NULL){ p=fast->next; fast->next=slow; slow=fast; fast=p; } //第五步:將快指針指向原始鏈表頭部,將快慢指針結點的值進行對比 fast=head; while(fast!=NULL&&slow!=NULL){ if(fast->val!=slow->val) returnfalse; fast=fast->next; slow=slow->next; } returntrue; }
圖解代碼
第一步:定義快慢指針,并將其指向頭結點
第二步:快指針每次走兩步,慢指針走一步
第三步:快指針指向慢指針后繼結點,慢指針斷鏈
第四步:反轉后半部分的鏈表
第五步:將快指針指向原始鏈表頭部,將快慢指針結點的值進行對比
審核編輯:湯梓紅
分享、在看與點贊
只要你點,我們就是胖友
原文標題:數據結構:判斷鏈表回文結構
文章出處:【微信公眾號:嵌入式攻城獅】歡迎添加關注!文章轉載請注明出處。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7614瀏覽量
137433 -
代碼
+關注
關注
30文章
4823瀏覽量
68900 -
數據結構
+關注
關注
3文章
573瀏覽量
40195 -
鏈表
+關注
關注
0文章
80瀏覽量
10584
原文標題:數據結構:判斷鏈表回文結構
文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
數據結構中最簡單的鏈表
數據結構作為嵌入式工程師必修課程之一,今天,我們就來講一講數據結構中最簡單的鏈表,包含鏈表的初始化、插入和遍歷操作。 鏈表在項目開發中使用的
發表于 06-13 17:40
?392次閱讀
Linux Kernel數據結構:鏈表
Linux Kernel數據結構:鏈表原創 2016年10月20日 22:58:25標簽:LINUX/kernel/鏈表 數據結構數據結構中
發表于 09-25 16:41
數據結構是什么_數據結構有什么用
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高
發表于 11-17 14:45
?1.6w次閱讀
什么是數據結構?為什么要學習數據結構?數據結構的應用實例分析
本文檔的主要內容詳細介紹的是什么是數據結構?為什么要學習數據結構?數據結構的應用實例分析包括了:數據結構在串口通信當中的應用,數據結構在按鍵
發表于 09-26 15:45
?14次下載
區塊鏈的基本數據結構解析
區塊鏈是一種分散式結構的系統,其中鏈表充當事務塊的基本數據結構。關于哪些事務塊應該附加到它的決策是由共識算法決定的。有時,選擇基本數據結構比選擇特定的共識算法對速度、吞吐量、可伸縮性和
發表于 01-03 14:49
?7542次閱讀
你知道Linux內核數據結構中雙向鏈表的作用?
Linux 內核提供一套雙向鏈表的實現,你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內核中的數據結構 ,因為這個是在 Linux 內核中使用最為廣泛的
發表于 05-14 17:27
?1887次閱讀
什么是棧?數據結構中棧如何實現
今天放松一下,我們來看看數據結構中的棧,這節的知識點可以說是數據結構中最容易上手的知識點了,其實比起鏈表,其實鏈表也有棧和隊列的模型,鏈表的
發表于 04-29 18:25
?0次下載
評論