欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++數(shù)據(jù)結(jié)構(gòu)與算法之判斷一個(gè)鏈表是否為回文結(jié)構(gòu)的方法

 更新時(shí)間:2017年05月08日 11:49:32   作者:難免有錯(cuò)_  
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之判斷一個(gè)鏈表是否為回文結(jié)構(gòu)的方法,結(jié)合實(shí)例形式分析了回文結(jié)構(gòu)并結(jié)合實(shí)例給出了C++判斷回文的操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C++判斷一個(gè)鏈表是否為回文結(jié)構(gòu)的方法。分享給大家供大家參考,具體如下:

題目:

給定一個(gè)鏈表頭節(jié)點(diǎn)head,請(qǐng)判斷是否為回文結(jié)構(gòu)

例如:

1->2->1 true
1->2->2->1 true
1->2->3->4->2->1 false

解題思路及代碼

1、找到鏈表中間節(jié)點(diǎn),然后將鏈表中間節(jié)點(diǎn)的右邊所有節(jié)點(diǎn)放入一個(gè)棧中。

2、然后從鏈表首節(jié)點(diǎn)和棧頂元素一一對(duì)比,不相等則return false。

算法C++代碼:

鏈表節(jié)點(diǎn)結(jié)構(gòu)定義

typedef struct Node
{
  int data;
  struct Node* next;
}node, *pLinkedList;
bool isHuiWen(pLinkedList head)
{
  if (head == NULL || head->next == NULL)
    return true;
  pLinkedList right = head->next;//保存中間節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)(若為偶數(shù)則為偏右的中間節(jié)點(diǎn))
  pLinkedList cur = head;      //快指針
  while (cur->next != NULL && cur->next->next != NULL)
  {
    right = right->next;
    cur = cur->next->next;
  }
  //當(dāng)鏈表總結(jié)點(diǎn)個(gè)數(shù)為奇數(shù)情況時(shí):
  if (cur->next != NULL && cur->next->next == NULL)
    right = right->next;
  //將鏈表右邊的節(jié)點(diǎn)放入一個(gè)棧中
  stack<pLinkedList>* s = new stack<pLinkedList>();
  while (right != NULL)
  {
    s->push(right);
    right = right->next;
  }
  //比較鏈表左右兩邊節(jié)點(diǎn)是否相等
  while (!s->empty())
  {
    if (head->next->data != s->top()->data)
      return false;
    s->pop();
    head = head->next;
  }
  return true;
}

希望本文所述對(duì)大家C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C語(yǔ)言中輸出空格的五種方法

    C語(yǔ)言中輸出空格的五種方法

    在C語(yǔ)言中,輸出空格可以通過(guò)使用?printf?函數(shù)來(lái)實(shí)現(xiàn),可以直接在字符串中包含空格,或者使用轉(zhuǎn)義字符來(lái)控制格式,本文給大家介紹了幾種常見(jiàn)的輸出空格的方法,需要的朋友可以參考下
    2024-08-08
  • C語(yǔ)言中幾種常量的認(rèn)識(shí)和理解

    C語(yǔ)言中幾種常量的認(rèn)識(shí)和理解

    這篇文章主要為大家介紹了C語(yǔ)言常量的認(rèn)識(shí)和理解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • C++關(guān)于指針,繼承和多態(tài)介紹

    C++關(guān)于指針,繼承和多態(tài)介紹

    大家好,本篇文章主要講的是C++關(guān)于指針,繼承和多態(tài)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語(yǔ)言進(jìn)程程序替換的實(shí)現(xiàn)詳解

    C語(yǔ)言進(jìn)程程序替換的實(shí)現(xiàn)詳解

    為什么要進(jìn)程替換?因?yàn)楦高M(jìn)程創(chuàng)建出來(lái)的子進(jìn)程和父進(jìn)程擁有相同的代碼段,所以,子進(jìn)程看到的代碼和父進(jìn)程是一樣的。當(dāng)我們想要讓子進(jìn)程執(zhí)行不同的程序時(shí)候,就需要讓子進(jìn)程調(diào)用進(jìn)程程序替換的接口,從而讓子進(jìn)程執(zhí)行不一樣的代碼
    2022-08-08
  • C語(yǔ)言中判斷兩數(shù)組中是否有相同的元素

    C語(yǔ)言中判斷兩數(shù)組中是否有相同的元素

    下面是我在做IF語(yǔ)句練習(xí)時(shí)遇到的一個(gè)練習(xí)題,想要整理在博客上判斷兩個(gè)數(shù)組中是否有相同的元素,需要的朋友可以參考下
    2019-10-10
  • C++?手?jǐn)]簡(jiǎn)易服務(wù)器

    C++?手?jǐn)]簡(jiǎn)易服務(wù)器

    本文主要介紹了C++?手?jǐn)]簡(jiǎn)易服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 淺談C語(yǔ)言的字符串分割

    淺談C語(yǔ)言的字符串分割

    下面小編就為大家?guī)?lái)一篇淺談C語(yǔ)言的字符串分割。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • 基于C++的拼多多算法在線筆試題示例

    基于C++的拼多多算法在線筆試題示例

    這篇文章主要介紹了基于C++的拼多多算法在線筆試題,列舉了四個(gè)拼多多的算法筆試題,包括分治法、大數(shù)相乘、貪心算法以及迷宮問(wèn)題,需要的朋友可以參考下
    2017-08-08
  • C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼

    C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼

    MD5算法是一種廣泛使用的 Hash 算法,常用于確保信息傳輸?shù)耐暾耘c一致性,本文主要介紹了C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • C語(yǔ)言非遞歸后序遍歷二叉樹(shù)

    C語(yǔ)言非遞歸后序遍歷二叉樹(shù)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言非遞歸后序遍歷二叉樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評(píng)論