1 #include<iostream> 2 #include<stack> 3 #include<assert.h> 4 using namespace std; 5 6 7 typedef struct node{ 8 int data; 9 node * next; 10 }node; 11 12 node * add(int n, node * head){ 13 node * t = new node; 14 t->data = n; 15 t->next = NULL; 16 if (head == NULL){ 17 head = t; 18 } 19 else if (head->next == NULL){ 20 head->next = t; 21 } 22 else{ 23 node * p = head->next; 24 while (p->next != NULL){ 25 p = p->next; 26 } 27 p->next = t; 28 } 29 return head; 30 } 31 32 //循环 33 node * reverse(node * head){ 34 35 if (head == NULL || head->next == NULL){ 36 return head; 37 } 38 39 node * p1 = head; 40 node * p2 = head->next; 41 node * p3 = NULL; 42 head->next = NULL; 43 44 while (p2 != NULL){ 45 p3 = p2; 46 p2 = p2->next; 47 p3->next = p1; 48 p1 = p3; 49 } 50 head = p1; 51 return head; 52 } 53 54 void print(node * head){ 55 node * p = head; 56 while (p != NULL){ 57 cout << p->data << " "; 58 p = p->next; 59 } 60 cout << endl; 61 } 62 63 64 //递归 65 node * reverse2(node * p){ 66 if (p == NULL || p->next == NULL){ 67 return p; 68 } 69 70 node * newHead = reverse2(p->next); 71 p->next->next = p; 72 p->next = NULL; 73 return newHead; 74 } 75 76 77 int main(){ 78 79 node * head = NULL; 80 for (int i = 1; i <= 5; i++){ 81 head = add(i, head); 82 } 83 print(head); 84 head = reverse(head); 85 print(head); 86 head = reverse2(head); 87 print(head); 88 89 system("pause"); 90 return 0; 91 }到此这篇单链表 逆序(单链表逆序输出数据结构)的文章就 介绍到这了,更多相关 内容请继续浏览下面的相关 推荐文章,希望大家都能在 编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/63229.html