现在就是Qt开发和给师弟师妹讲下数据结构吧,感觉还挺漫长的,上个Qt帖子等我把成品做出来再更。

 //Convert_plug.h

 #ifndef CONVERT
#define CONVERT #define MAX 81
typedef char NmaeType;
typedef struct _name_list
{
NmaeType name[];
struct _name_list *next;
}Name_List; void convert_the_list(Name_List **);
void print_list(Name_List *const, const char *); #endif // !CONVERT
 //Convert.cpp

 #include "convert_plug.h"
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[])
{
FILE *fp = fopen("D:\\input.txt", "r");
Name_List *head = NULL, *tmpCell = NULL, *listPre = NULL; for (;!feof(fp);)
{
tmpCell = (Name_List *)malloc(sizeof(Name_List));
fscanf(fp, "%s", tmpCell->name); if (!listPre)
head = tmpCell;//如果是空链表则创建链表头
else
listPre->next = tmpCell;//如果不是,则上一个链表要连到当前链表上 listPre = tmpCell, listPre->next = NULL;
}
print_list(head,"反转前:");
convert_the_list(&head);
print_list(head,"反转后:"); fclose(fp);
system("pause");
return ;
} void print_list(Name_List *const listHead, const char *inform)
{
//输出所有链表的值
Name_List *tmpCell = listHead;
printf("%s", inform);
for (; tmpCell != NULL; tmpCell = tmpCell->next)
printf("%s ", tmpCell->name);
printf("\n");
} void convert_the_list(Name_List **listHead)
{
if (listHead == NULL)
return;
Name_List
*listTmpCur = *listHead
, *listTmpNext = (*listHead)->next
, *listTmpPre = NULL; for (;listTmpNext != NULL;)
{
listTmpCur->next = listTmpPre;
listTmpPre = listTmpCur;
listTmpCur = listTmpNext;
listTmpNext = listTmpNext->next;
}
listTmpCur->next = listTmpPre;
*listHead = listTmpCur; }

链表原地反转Demo的更多相关文章

  1. 理解单链表的反转(java实现)

    要求很简单,输入一个链表,反转链表后,输出新链表的表头.   反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不 ...

  2. 秒懂单链表及其反转(reverse)

    什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列.链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础. 链表比起数组 ...

  3. Java实现单链表的反转

    思路1:初始化一个新的头节点reverseHead,然后遍历旧链表,利用头插法向reverseHead进行插入 思路2: 1.反转相当于数据的更换(1和n,2和n-1,3和n-2)n为链表的长度 2. ...

  4. 链表的反转、合并(不借助额外list数组)

    链表的基本操作:线性表 (单链表.循环链表-python实现) 反转链表: # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): ...

  5. python 链表的反转

    code #!/usr/bin/python # -*- coding: utf- -*- class ListNode: def __init__(self,x): self.val=x self. ...

  6. 【Leetcode链表】反转链表 II(92)

    题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m ...

  7. 【Leetcode链表】反转链表(206)

    题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...

  8. 【python-leetcode206-翻转链表】反转链表

    问题描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可 ...

  9. python实现单链表的反转

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/env python #coding = utf-8 ...

随机推荐

  1. 微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github

    在V2版本发布的博文中,已经介绍了大多数Api的用法,同时也收到了很多意见,其中发布了几个修正版本,修改了几个bug,在此感谢大家的使用,有了大家的支持,相信快速开发框架会越来越好,也会越来越完善的. ...

  2. 关于今天很热的--FizzBuzzWhizz

    今天早上到现在看到了3篇关于FizzBuzzWhizz的问题,第一篇是@程序媛想事儿(Alexia)[最难面试的IT公司之ThoughtWorks代码挑战--FizzBuzzWhizz游戏]其实题目不 ...

  3. Cordova Ionic AngularJS

    实践分享:开始用Cordova+Ionic+AngularJS开发App http://www.cocoachina.com/webapp/20150707/12395.html

  4. viewport就是这回事

    前言 对于移动webapp开发人员来说,viewport是个很重要的东西,容易用但很多时候都是不明白的,于是我决心去弄清楚它. <meta name="viewport" c ...

  5. 通过OnResultExecuted设置返回内容为JSONP

    public class JsonpAttribute : ActionFilterAttribute { /// <summary> /// 在执行操作结果后更改返回结果 /// < ...

  6. 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)

    using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...

  7. opencv 比较直方图方式 进行人脸检测对比

    完整opencv(emgucv)人脸.检测.采集.识别.匹配.对比 //成对几何直方图匹配               public static string MatchHist()         ...

  8. php常用数组函数小结

    count函数 作用:计算数组中元素的个数或对象的属性个数 返回值: 数组或者对象, 返回数组的单元个数或者对象的属性个数 Null,返回0 非数组,也非NULL,通通返回1 <?php $ar ...

  9. 10月28日下午MySQL数据库的增加、删除、查询(匹配数据库登录和可以增、删、查的显示数据库内容的页面))

    一.匹配数据库登录 步骤: 1.做一个普通的登录界面,注意提交方式为post. <!--登录界面--> <form action="chuli.php" meth ...

  10. Unity3D 之脚本架构,优雅地管理你的代码

    本文参考雨松MOMO大神的帖子: 图片全部来自他的帖子(请允许我偷懒下) --------------------------------------------------------------- ...