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

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),遞歸。讀者最容易理解的方法就是在紙上自己畫一下。

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

相關文章

  • Qt實現(xiàn)UDP多線程數據處理及發(fā)送的簡單實例

    Qt實現(xiàn)UDP多線程數據處理及發(fā)送的簡單實例

    本文主要介紹了Qt實現(xiàn)UDP多線程數據處理及發(fā)送的簡單實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 在C++中反射調用.NET的方法(一)

    在C++中反射調用.NET的方法(一)

    為什么要在C++中調用.NET呢?接下來通過本文給大家介紹在C++中反射調用.NET的方法(一),需要的朋友參考下吧
    2017-02-02
  • C語言線性表之雙鏈表詳解

    C語言線性表之雙鏈表詳解

    這篇文章主要為大家詳細介紹了C語言線性表之雙鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • QT實現(xiàn)讀寫ini文件的示例代碼

    QT實現(xiàn)讀寫ini文件的示例代碼

    .ini文件是Initialization?File的縮寫,即初始化文件,本文主要給大家介紹了關于Qt讀寫ini文件的相關方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 詳解C++編程中的靜態(tài)成員與可變數據成員

    詳解C++編程中的靜態(tài)成員與可變數據成員

    這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數據成員,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • 華為筆試算法題匯總

    華為筆試算法題匯總

    這篇文章主要為大家匯總了華為筆試算法題,每一題都給出了詳細代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++核心編程之內存分區(qū)詳解

    C++核心編程之內存分區(qū)詳解

    這篇文章主要為大家詳細介紹了C++核心編程之內存分區(qū),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++?數據結構超詳細講解順序表

    C++?數據結構超詳細講解順序表

    程序中經常需要將一組數據元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數等。一組數據中包含的元素個數可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-03-03
  • C語言詳細講解const的用法

    C語言詳細講解const的用法

    今天探討const,首先來說是將變量常量化。為什么要將變量常量化,原因有諸多好處有諸多。比如可以使數據更加安全不會被修改
    2022-05-05
  • C++中名稱空間namespace的使用方法示例

    C++中名稱空間namespace的使用方法示例

    namespace中文意思是命名空間或者叫名字空間,下面這篇文章主要給大家介紹了關于C++中名稱空間namespace使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。
    2017-12-12

最新評論