a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言實現單鏈表逆序與逆序輸出實例

2020-01-26 15:22:45
字體:
來源:轉載
供稿:網友

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

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;}//循環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;}

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 青草青草久热精品视频在线观看 | 国产成人午夜精品影院游乐网 | 免费观看黄色一级大片 | 欧美日本三级 | 毛片99| 午夜日韩在线观看 | 免费黄在线看 | 国产精品久久免费视频 | 日韩激情欧美 | 日韩在线免费 | 国产电影一区二区 | 亚洲成人免费影院 | 超碰青青青 | 国产传媒在线视频 | 日本一区二区在线播放 | 99精品国产高清一区二区麻豆 | 91亚洲高清 | 国产亲子乱弄免费视频 | 久久综合一区 | 一区二区三区在线视频免费观看 | 天天操天天干天天 | 欧美自拍视频 | 成人在线不卡视频 | 色婷婷久久久久swag精品 | 男女在线视频 | 久久99国产精品 | 国产亚洲一区二区三区在线观看 | 国产91在线播放精品91 | 韩日欧美 | 久久理论片 | avav片| 欧美日韩综合精品 | 黄色国产一级视频 | 91精品久久久久久久久久入口 | 丝袜+亚洲+另类+欧美+变态 | 色婷婷成人 | 成人av网站免费 | 欧美不卡视频一区发布 | 午夜香蕉视频 | 日本午夜电影 | 免费黄色毛片视频 |