最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)單鏈表逆序與逆序輸出實例

 更新時間:2014年08月23日 09:17:47   投稿:shichen2014  
這篇文章主要介紹了C語言實現(xiàn)單鏈表逆序與逆序輸出,是數據結構與算法中比較基礎的重要內容,有必要加以牢固掌握,需要的朋友可以參考下

單鏈表的逆序輸出分為兩種情況,一種是只逆序輸出,實際上不逆序;另一種是把鏈表逆序。本文就分別實例講述一下兩種方法。具體如下:

1.逆序輸出

實例代碼如下:

#include<iostream>
#include<stack>
#include<assert.h>
using namespace std;

typedef struct node{
 int data;
 node * next;
}node;

//尾部添加
node * add(int n, node * head){
 node * t = new node;
 t->data = n;
 t->next = NULL;
 if (head == NULL){
  head = t;
 }
 else if (head->next == NULL){
  head->next = t;
 }
 else{
  node * p = head->next;
  while (p->next != NULL){
   p = p->next;
  }
  p->next = t;
 }
 return head;
}

//順序輸出
void print(node * head){
 node * p = head;
 while (p != NULL){
  cout << p->data << " ";
  p = p->next;
 }
 cout << endl;
}

//遞歸
void reversePrint(node * p){
 if (p != NULL){
  reversePrint(p->next);
  cout << p->data << " ";
 }
}

//棧
void reversePrint2(node * head){
 stack<int> s;
 while (head != NULL){
  s.push(head->data);
  head = head->next;
 }

 while (!s.empty()){
  cout << s.top() << " ";
  s.pop();
 }
}

int main(){

 node * head = NULL;
 for (int i = 1; i <= 5; i++){
  head = add(i, head);
 }
  print(head);
  reversePrint(head);
  reversePrint2(head);
 system("pause");
  return 0;
}

逆序輸出可以用三種方法: 遞歸,棧,逆序后輸出。最后一種接下來講到。

2.單鏈表逆序

實例代碼如下:

#include<iostream>
#include<stack>
#include<assert.h>
using namespace std;


typedef struct node{
 int data;
 node * next;
}node;

node * add(int n, node * head){
 node * t = new node;
 t->data = n;
 t->next = NULL;
 if (head == NULL){
  head = t;
 }
 else if (head->next == NULL){
  head->next = t;
 }
 else{
  node * p = head->next;
  while (p->next != NULL){
   p = p->next;
  }
  p->next = t;
 }
 return head;
}

//循環(huán)
node * reverse(node * head){

 if (head == NULL || head->next == NULL){
  return head;
 }

 node * p1 = head;
 node * p2 = head->next;
 node * p3 = NULL; 
 head->next = NULL;

 while (p2 != NULL){
  p3 = p2;
  p2 = p2->next;
  p3->next = p1;
  p1 = p3;
 }
 head = p1;
 return head;
}

void print(node * head){
 node * p = head;
 while (p != NULL){
  cout << p->data << " ";
  p = p->next;
 }
 cout << endl;
}


//遞歸
node * reverse2(node * p){
 if (p == NULL || p->next == NULL){
  return p;
 }

 node * newHead = reverse2(p->next);
 p->next->next = p;
 p->next = NULL;
 return newHead;
}


int main(){

 node * head = NULL;
 for (int i = 1; i <= 5; i++){
  head = add(i, head);
 }
 print(head);
 head = reverse(head);
 print(head);
 head = reverse2(head);
 print(head);

 system("pause");
 return 0;
}

這里鏈表逆序用了兩種方法:循環(huán),遞歸。讀者最容易理解的方法就是在紙上自己畫一下。

希望本文所述實例對大家的數據結構與算法學習能有所幫助。

相關文章

  • 基于C語言打造高效便捷的通訊錄管理系統(tǒng)

    基于C語言打造高效便捷的通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細介紹了如何基于C語言打造高效便捷的通訊錄管理系統(tǒng),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • C++11 學習筆記之std::function和bind綁定器

    C++11 學習筆記之std::function和bind綁定器

    這篇文章主要介紹了C++11 學習筆記之std::function和bind綁定器,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • C語言實現(xiàn)高精度加法的示例代碼

    C語言實現(xiàn)高精度加法的示例代碼

    高精度的本質是將數字以字符串的形式讀入,然后將每一位分別存放入int數組中,通過模擬每一位的運算過程,來實現(xiàn)最終的運算效果,下面我們就來看看如何通過C語言實現(xiàn)高精度加法吧
    2023-11-11
  • 利用C++編寫一個Json解析器

    利用C++編寫一個Json解析器

    這篇文章主要為大家詳細介紹了如何利用C++編寫一個簡單又好用的Json解析器,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-03-03
  • C語言 奇偶排序算法詳解及實例代碼

    C語言 奇偶排序算法詳解及實例代碼

    這篇文章主要介紹了C語言 奇偶排序算法詳解及實例代碼的相關資料,需要的朋友可以參考下
    2016-11-11
  • C++實現(xiàn)字符串轉整數(atoi)的代碼詳解

    C++實現(xiàn)字符串轉整數(atoi)的代碼詳解

    在編程中,經常會遇到將字符串轉換為整數的需求,就像標準庫中的 atoi 函數一樣,本文給大家介紹了C++中字符串轉整數(atoi)的實現(xiàn)與解析,并有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2025-04-04
  • C++中內存池的簡單原理及實現(xiàn)詳解

    C++中內存池的簡單原理及實現(xiàn)詳解

    內存池的思想是,在真正使用內存之前,預先申請分配一定數量、大小預設的內存塊留作備用。本文主要來和大家聊聊內存池的簡單原理及實現(xiàn),希望對大家有所幫助
    2023-03-03
  • 基于C語言實現(xiàn)見縫插針游戲的示例代碼

    基于C語言實現(xiàn)見縫插針游戲的示例代碼

    見縫插針游戲就是使用鼠標左鍵點擊發(fā)射針,當兩個針的夾角小于一定限制時,游戲結束。本文將用C語言實現(xiàn)這一有趣游戲,感興趣的可以了解一下
    2022-11-11
  • 用C語言遞歸實現(xiàn)火車調度算法詳解

    用C語言遞歸實現(xiàn)火車調度算法詳解

    本文主要介紹了用C語言遞歸實現(xiàn)火車調度算法詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++實現(xiàn)支持泛型的LFU詳解

    C++實現(xiàn)支持泛型的LFU詳解

    這篇文章主要給大家介紹了關于C++實現(xiàn)LFU的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-09-09

最新評論

琼中| 海丰县| 慈利县| 岳普湖县| 古田县| 安达市| 都兰县| 姚安县| 中牟县| 西青区| 简阳市| 朝阳市| 岳池县| 齐齐哈尔市| 阿拉善左旗| 滦南县| 仁怀市| 乡宁县| 九龙坡区| 河南省| 庆城县| 拜泉县| 长寿区| 化隆| 南乐县| 基隆市| 全南县| 宜良县| 镇宁| 辉南县| 丰县| 淄博市| 松潘县| 定结县| 元阳县| 浪卡子县| 南投县| 兰坪| 措勤县| 民勤县| 罗定市|