链表原地反转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 ...
随机推荐
- 2016-1-1最新版本的linphone-android在mac上编译通过,同时建立了IDEA工程
虽然参考了这个文章<MAC OS编译Android版Linphone SDK和APP>,https://www.lidaren.com/archives/1592 ,但是在实际的编译过程中 ...
- URLConnection类介绍
URLConnection是一个功能强大的抽象类,它表示指向URL指定资源的活动连接. 与URL类相比,它与服务器的交互提供了更多的控制机制.尤其服务器是HTTP服务器,可以使用URLConnecti ...
- Android6.0动态申请权限
先直接看代码: public void onClick(View v){ onCallPermission(); } public void onCallPermission(){ if (Build ...
- javascript 中断函数的使用 setInterval()——返回顶部
方法名称:gotop() 功能描述:点击某个元素,调用方法gotop(),固定间隔,滚动至屏幕顶部 日期 :2016.06.06 16:02 author :cyh2009@live.com < ...
- 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK
一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...
- Eclipse+maven创建webapp项目<二>(转)
原文地址:http://www.cnblogs.com/candle806/p/3439469.html 1.开启eclipse,右键new-->other,如下图找到maven project ...
- jeecg小吐槽
1.online开发出来的表单,字段中设置的默认值,新建表单的时候不会出来,要保存后才会在后台补加进去!(为时已晚吧) 2.online开发出来的表单,主表中的附表,在online配置界面指定了可以为 ...
- jQuery 教程
jQuery 教程 W3School H-ui前端框架 html标签
- 在php中验证复选框
PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便.但是还是有解决办法的,就是利用javascript做一下预处理.多个同名复选框在javascript中还是以数组的形 ...
- JavaScript的学习资料
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript http://www.liaoxuefeng.com/wiki/001434446689 ...