這篇文章主要講解了“Python怎么判斷一個單鏈表是否是回文鏈表”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python怎么判斷一個單鏈表是否是回文鏈表”吧!
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供蘆淞網(wǎng)站建設(shè)、蘆淞做網(wǎng)站、蘆淞網(wǎng)站設(shè)計、蘆淞網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、蘆淞企業(yè)網(wǎng)站模板建站服務(wù),十載蘆淞做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
判斷一個單鏈表是否是回文鏈表。
如:[1, 2, 3, 2, 1] 就是一個回文鏈表,正著依次看鏈表中元素和反著依次看鏈表中元素都是一樣的。
解題思路:
必須做的第一個步驟就是判斷輸入鏈表是否為空,或者只有一個元素。如果為空或者只有一個元素,則此鏈表為回文鏈表返回true。
使用快慢指針,找到鏈表中點(diǎn)。慢指針一次走一步,快指針一次走兩步。
根據(jù)找到的鏈表中點(diǎn),反轉(zhuǎn)后半部分的鏈表的所有值,并與整體單鏈表的值從頭依次比對,有一個值不同,則不是回文鏈表,否則為回文鏈表。
如輸入單鏈表:[1, 2, 3, 2, 1]
反轉(zhuǎn)后半部分得到的單鏈表:[1, 2]
Language:C
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) {struct ListNode* pre = (struct ListNode *)malloc(sizeof(struct ListNode));struct ListNode* next = (struct ListNode *)malloc(sizeof(struct ListNode)); pre=NULL; next=NULL;while(head!=NULL){ next=head->next; head->next=pre; pre=head; head=next; }return pre; }bool isPalindrome(struct ListNode* head) {struct ListNode* slow = (struct ListNode *)malloc(sizeof(struct ListNode));struct ListNode* fast = (struct ListNode *)malloc(sizeof(struct ListNode));if(head == NULL || head->next == NULL){return true; } fast = head; slow = head;while(fast->next && fast->next->next){ slow = slow->next; fast = fast->next->next; } slow = reverseList(slow->next);while(slow){if(head->val != slow->val){return false; } head = head->next; slow = slow->next; }return true; }
Language:cpp
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool isPalindrome(ListNode* head) {if(head == NULL || head->next == NULL){ return true; } ListNode* slow = head; ListNode* fast = head;while(fast->next && fast->next->next){ slow = slow->next; fast = fast->next->next; } slow = reverseList(slow->next);while(slow){if(head->val != slow->val){ return false; } head = head->next; slow = slow->next; } return true; } ListNode* reverseList(ListNode* head){ ListNode* pre = NULL; ListNode* next = NULL;while(head!=NULL){next=head->next; head->next=pre; pre=head; head=next; } return pre; } };
感謝各位的閱讀,以上就是“Python怎么判斷一個單鏈表是否是回文鏈表”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python怎么判斷一個單鏈表是否是回文鏈表這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
新聞標(biāo)題:Python怎么判斷一個單鏈表是否是回文鏈表
本文網(wǎng)址:http://jinyejixie.com/article40/iepieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、定制開發(fā)、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)