链表原地反转Demo
现在就是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的更多相关文章
- 理解单链表的反转(java实现)
要求很简单,输入一个链表,反转链表后,输出新链表的表头. 反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不 ...
- 秒懂单链表及其反转(reverse)
什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列.链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础. 链表比起数组 ...
- Java实现单链表的反转
思路1:初始化一个新的头节点reverseHead,然后遍历旧链表,利用头插法向reverseHead进行插入 思路2: 1.反转相当于数据的更换(1和n,2和n-1,3和n-2)n为链表的长度 2. ...
- 链表的反转、合并(不借助额外list数组)
链表的基本操作:线性表 (单链表.循环链表-python实现) 反转链表: # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): ...
- python 链表的反转
code #!/usr/bin/python # -*- coding: utf- -*- class ListNode: def __init__(self,x): self.val=x self. ...
- 【Leetcode链表】反转链表 II(92)
题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m ...
- 【Leetcode链表】反转链表(206)
题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...
- 【python-leetcode206-翻转链表】反转链表
问题描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可 ...
- 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 ...
随机推荐
- JavaScript 特殊对象 Array-Like Objects 详解
这篇文章拖了有两周,今天来跟大家聊聊 JavaScript 中一类特殊的对象 -> Array-Like Objects. (本文节选自 underscore 源码解读系列文章,完整版请关注 h ...
- CloudSim介绍和使用
本文主要介绍一下我在使用CloudSim时翻译.整理和理解的一些信息,以及我的使用经验,希望能对有需要的朋友们有所帮助~1.我翻译和理解的一些信息: 2009年4月8日,澳大利亚墨尔本大学的网格 ...
- Gson解析json字符串
// 解析传递过来的json字符串 JsonParser parser = new JsonParser(); JsonObject jsonObj = parser.parse(strJson).g ...
- [HTTP Protocol] 200 OK (from cache)和304 Not Modified
含义 200 OK (from cache)直接从缓存中获取的内容并未请求服务器 304 Not Modified 请求服务器并和服务器比较 If-Modified-Since,若文件未改变,服务器返 ...
- 虚拟机VMware 12 Pro 永久许可证激活密钥
热门虚拟机软件VMware Workstation Pro现已更新至v12.5.2.12.0属于大型更新,专门为Win10的安装和使用做了优化,支持DX10.4K高分辨率显示屏.OpenGL 3.3. ...
- svn 上传出现Cannot accept non-LF lind endings in 'svn:log'
可能是你到cimmit日志的字有svn不认的,重新把长传日志删掉,重新敲一遍就好了
- 架构师养成记--4.volatile关键字
volatile修饰的变量可在多个线程间可见. 如下代码,在子线程运行期间主线程修改属性值并不对子线程产生影响,原因是子线程有自己独立的内存空间,其中有主内存中的变量副本. public class ...
- ubuntu使用doxygen
1.安装 sudo apt-get install doxygen按tab键 doxygen doxygen-dbg doxygen-doc doxygen-gui d ...
- [Unity3d]向量的过度方法以及拖尾效果
Vector3.RotateTowards() 用法 public static function RotateTowards(current: Vector3, target: Vector3, m ...
- 大熊君学习html5系列之------Online && Offline(在线状态检测)
一,开篇分析 Hi,大家好,给大家拜个晚年!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的 ...