分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

// 反转单链表的循环算法(C++)#include <iostream>#define NULL 0using namespace std;struct Node{ char data; Node* next;};Node* create(){ Node* head = NULL; Node* rear = head; Node* p; // The pointer points to new created node. char tmp; do {  cout << "Please input positive integer or #:";  cin >> tmp;  if(tmp != -1)  {   p = new Node;   p->data = tmp;   p->next = NULL;   if(head == NULL)   {    head = p;   }   else   {    rear->next = p;   }   rear = p;  } } while(tmp != '#'); return head;}void print(Node* head){ cout << "The current list is: "; Node* p = head; if(head != NULL) {  do  {   cout << p->data << cout << ' ';   p = p->next;  }  while(p != NULL); } cout << "\r\n";}void reverse(Node*& head) // Use & here since the function body changed the head pointer.{ if(head == NULL) {  return; } Node*pre, *cur, *ne; pre = head; cur = head->next; while(cur) {  ne = cur->next; // Store next pointer.  cur->next = pre; // Reverse the current code pointer.  pre = cur;  cur = ne; } head->next = NULL; head = pre;}int main(){ Node* list = create(); print(list); reverse(list); print(list); return 0;}// Output:/*Please input positive integer or #:1Please input positive integer or #:5Please input positive integer or #:8Please input positive integer or #:3Please input positive integer or #:2Please input positive integer or #:7Please input positive integer or #:9Please input positive integer or #:fPlease input positive integer or #:gPlease input positive integer or #:tPlease input positive integer or #:YPlease input positive integer or #:BPlease input positive integer or #:#The current list is: 10FC0C3E8 50FC0C3E8 80FC0C3E8 30FC0C3E8 20FC0C3E8 70FC0C3E8 90FC0C3E8 f0FC0C3E8 g0FC0C3E8 t0FC0C3E8 Y0FC0C3E8 B0FC0C3E8 #0FC0C3E8The current list is: #0FC0C3E8 B0FC0C3E8 Y0FC0C3E8 t0FC0C3E8 g0FC0C3E8 f0FC0C3E8 90FC0C3E8 70FC0C3E8 20FC0C3E8 30FC0C3E8 80FC0C3E8 50FC0C3E8 10FC0C3E8*/
// 反转单链表的递归算法(C++)#include <iostream>#define NULL 0using namespace std;struct Node{ char  data; Node* next;};Node* create(){ Node* head = NULL; Node* rear = head; Node* p; // The pointer points to the new created node. char  tmp; do {  cout << "Please input integer or char '#':";  cin >> tmp;  if(tmp != '#')  {   p = new Node;   p->data = tmp;   p->next = NULL;   if(head == NULL)   {    head = p;   }   else   {    rear->next = p;   }   rear = p;  } } while(tmp != '#'); return head;}void print(Node* head){ cout << "The current list is: "; Node* p = head; if(head != NULL) {  do  {   cout << p->data << cout << ' ';   p = p->next;  }  while(p != NULL); } cout << "\r\n";}Node* reverseSingleLinkedListRecursive(Node* p, Node*& head){ if(p == NULL || p->next == NULL) {  head = p;  return p; } Node* tmp = reverseSingleLinkedListRecursive(p->next, head); tmp->next = p; p->next = NULL; // To prevent forming a ring. return p;}int main(){ Node* list = create(); print(list); reverseSingleLinkedListRecursive(list, list); print(list); return 0;}// Output:/*Please input integer or char '#':1Please input integer or char '#':2Please input integer or char '#':4Please input integer or char '#':6Please input integer or char '#':3Please input integer or char '#':8Please input integer or char '#':7Please input integer or char '#':9Please input integer or char '#':0Please input integer or char '#':#The current list is: 10F69C3E8 20F69C3E8 40F69C3E8 60F69C3E8 30F69C3E8 80F69C3E8 70F69C3E8 90F69C3E8 00F69C3E8The current list is: 00F69C3E8 90F69C3E8 70F69C3E8 80F69C3E8 30F69C3E8 60F69C3E8 40F69C3E8 20F69C3E8 10F69C3E8*/

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

数据结构 - 反转单链表(C++)相关推荐

  1. java 链表反转_剑指BAT:如何最优雅着反转单链表?

    前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢 [题目描述] 反转单链表.例如链表为: ...

  2. python怎么反转单链表_单链表反转python实现代码示例

    单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表 循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可. 代码: class Li ...

  3. 浅谈:数据结构之单链表,java代码演示单链表

    单链表 本文是观看尚硅谷韩老师视频学习总结,部分来源网络. 单链表介绍 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...

  4. Θ(n)反转单链表(算法导论第三版第十章10.2-7)

    Θ(n)反转单链表 (算法导论第三版第十章10.2-7) template<typename T> void reverses(Single_L<T> &l) {if( ...

  5. 数据结构:单链表中在P结点前插入S结点

    标题:数据结构:单链表中在P结点前插入S结点 在数据结构的习题中偶然看到了一个题目 已知在单链表中P不是首元结点也不是尾元结点,在P结点前插入S结点 #include<stdio.h> # ...

  6. lcg_magic算法笔记:反转单链表

    文章目录 1. 题目 2. 无头结点的单链表 2.1. 原始单链表 2.2. 反转过程 2.3. 代码 2.4. 结果 2.5. Github 3. 带头结点的单链表 3.1. 初始单链表 3.2. ...

  7. 基本的数据结构:单链表(Singly Linked List)

    一.基本的数据结构:单链表(Singly Linked List) 什么是单链表? 下面是百度百科给出的官方解释: 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表 ...

  8. 链表相关操作:创建链表、遍历链表、求链表长度、链表中删除一个节点、链表中插入一个节点、反转单链表...

    1 #include<iostream> 2 #include<stdlib.h> 3 4 typedef struct node 5 { 6 int data; 7 stru ...

  9. 数据结构之单链表超详细

    目录 单链表介绍和内存布局 单链表的应用实例 单链表的创建和和遍历分析 单链表的创建和和遍历代码 单链表按顺序插入节点 代码实现 单链表结点的修改 删除结点 经典面试题 求单链表的结点个数 查找单链表 ...

最新文章

  1. 搭建 Hadoop 伪分布式环境
  2. oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
  3. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码
  4. 构建创业公司突击小团队
  5. .NET 编码的基础知识
  6. 链表之删除单链表倒数第K个节点
  7. 我们需要打造有意识的人工智能吗?
  8. STM32之窗口看门狗例程
  9. 电子计算机解锁,全电子计算机联锁系统信号解锁模块的研究
  10. 【操作系统】进程的异步性
  11. 半监督学习(semi-supervised learning)
  12. blender php,Blender 源码学习 --- Modifier
  13. 施一公:无论什么学科,最不重要的就是智商
  14. POJ3345 Bribing FIPA(树形DP)
  15. 基于FPGA的交通灯——香樟路
  16. Android 6种加载网络图片的第三方详解
  17. html将字符串按逗号分隔,js如何截取以逗号隔开的字符串
  18. 不想学习的小颓靡怎么解决
  19. 梁权财到徐闻生态工业集聚区调研
  20. java 生成纯色图片_java实现切图并且判断图片是不是纯色/彩色图片

热门文章

  1. jQuery中attr和prop方法的区别
  2. INFO ipc.Client:Retrying connect to server 9000
  3. xenapp 发布到外网更改公网IP。
  4. 通过IIS操作修改服务器文件没有权限的解决办法
  5. 说说如何搭建 Nginx 反向代理 Tomcat
  6. JAVA之旅(八)——多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例...
  7. python爬虫人门(10)Scrapy框架之Downloader Middlewares
  8. 编译安装LNMP Centos 6.5 x64(6.6 x64) + Nginx1.6.0 + PHP5.5.13 + Mysql5.6.19
  9. 第一次作业:阅读优秀博文谈感想
  10. 《JavaScript应用程序设计》一一2.8 闭包