博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表的逆序
阅读量:6136 次
发布时间:2019-06-21

本文共 1747 字,大约阅读时间需要 5 分钟。

用c++实现单链表的逆序输出。

 

题目描述:在已知单链表头节点的情况下,设计算法逆置单链表并输出

方法一:采用首先将头节点指向空,让其变为尾节点,然后利用中间节点 p、q 将其后的节点一个接一个改为指向前面的节点

 

 

#include 
using namespace std; struct List { int num; List *next; }; List *createList(int n) //创建含有n个节点的单链表 { List *head, *p, *q; q=head = NULL; //初始化表头和中间指针 int i; for (i = n; i > 0; --i) { p = new List; //申请空间,创建第一个节点 cin >> p->num; //往节点中存入数据信息 if (head == NULL) { head = p; } else { q->next = p; } q = p; } q->next = NULL; return head; } List *ReverseList(List *head) //逆置单链表 { List *p, *r; //定义两个中间节点,用于顺移逆置链表节点 if (head->next == NULL) return head; p = head; //获取头节点地址 r = p->next; //获取链表第二个节点地址 p->next = NULL; //头节点变为尾节点,原链表表头指向空 while (r) { p = r; r = r->next; p ->next = head; //使第二个节点指向原先的头节点 head = p; //使第二个节点变为头节点,用于循环逆置 } return head; } void print(List *head) //输出逆置后的单链表 { List *p; p = head; while (p) { cout<
num; p = p->next; cout << " "; } cout << endl; } int _tmain(int argc, _TCHAR* argv[]) { List *p, *q; cout << "请输入单链表的节点个数:"; int n; cin >> n; cout << endl; cout << "创建一个节点为" << n << "的单链表" << endl; p = createList(n); cout << endl; cout << "这步为程序逆置单链表" << endl; q = ReverseList(p); cout << endl; cout << "打印逆置后的单链表" << endl; print(q); cout << endl; return 0; }

 

转载于:https://www.cnblogs.com/zyqBlog/p/5914540.html

你可能感兴趣的文章
《第一本Docker书(修订版)》——1.4 Docker与配置管理
查看>>
如何将 Ubuntu14.04 Server 安全的升级到14.10
查看>>
DevOps:软件架构师行动指南3.7 更多阅读材料
查看>>
《解读NoSQL》——2.5 比较ACID和BASE——两种可靠的数据库事务方法
查看>>
《Node学习指南》一第1章 Node.js:启动与运行1.1 搭建Node开发环境
查看>>
《Android游戏开发详解》——第2章,第2.22节小结
查看>>
在Windows 8 PC上安装Linux的四种方法
查看>>
MaxCompute计算长尾问题
查看>>
保险行业上云的正确姿势:天安人寿金融云实践之路
查看>>
OpenGL ES简介
查看>>
Scala入门到精通——第十节 Scala类层次结构、Traits初步
查看>>
《C语言及程序设计》程序阅读——位运算及其应用
查看>>
亚云邮件营销软件背后的阿里云平台支持
查看>>
MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
查看>>
Java 注解详解 (annotation)
查看>>
鹰眼跟踪、限流降级,EDAS的微服务解决之道
查看>>
秘籍:程序猿该如何实力撩妹
查看>>
网络编程socket基本API详解
查看>>
API接口设计 OAuth2.0认证
查看>>
Mysql5.6的1755错误解决办法
查看>>