c语言链表拆分,C语言拆分链表程序
创建一个链表,并这个链表拆分成为两个链表的示例程序,将以下代码保存到一个源文件中:split_linked_list.c, 如下所示 –
#include #include struct node { int data; struct node *next; }; struct node *even = NULL; struct node *odd = NULL; struct node *list = NULL; //Create Linked List void insert(int data) { // Allocate memory for new node; struct node *link = (struct node*) malloc(sizeof(struct node)); struct node *current; link->data = data; link->next = NULL; if (list == NULL) { list = link; return; } current = list; while (current->next != NULL) current = current->next; // Insert link at the end of the list current->next = link; } void display(struct node *head) { struct node *ptr = head; printf("[head] =>"); //start from the beginning while (ptr != NULL) { printf(" %d =>", ptr->data); ptr = ptr->next; } printf(" [null]n"); } void split_list() { // Allocate memory for new node; struct node *link; struct node *current; while (list != NULL) { struct node *link = (struct node*) malloc(sizeof(struct node)); link->data = list->data; link->next = NULL; if (list->data % 2 == 0) { if (even == NULL) { even = link; list = list->next; continue; } else { current = even; while (current->next != NULL) current = current->next; // Insert link at the end of the list current->next = link; } list = list->next; } else { if (odd == NULL) { odd = link; list = list->next; continue; } else { current = odd; while (current->next != NULL) current = current->next; // Insert link at the end of the list current->next = link; } list = list->next; } } } int main() { int i; for (i = 1; i <= 10; i++) insert(i); printf("Complete list: n"); display(list); split_list(); printf("nOdd : "); display(odd); printf("Even : "); display(even); return 0; }
执行上面程序,得到以下结果 –
Complete list: [head] => 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8 => 9 => 10 => [null] Odd : [head] => 1 => 3 => 5 => 7 => 9 => [null] Even : [head] => 2 => 4 => 6 => 8 => 10 => [null]
¥ 我要打赏 纠错/补充 收藏
c语言链表拆分,C语言拆分链表程序相关推荐
- c语言饭卡管理系统链表文件,C语言《学生信息管理系统》链表+文件操作
今天带来的是一个链表版本的<学生信息管理系统>,功能包括:添加.显示.查询.删除.保存.读取,等功能模块,链表是C语言的进阶内容,希望大家好好学习,这里的代码可能会有一些瑕疵,希望大家提供 ...
- 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)
单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List). 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不 ...
- 十字交叉链表c语言,C语言课程设计报告—十字交叉链表的应用.doc
C语言课程设计报告-十字交叉链表的应用 PAGE \* MERGEFORMAT 13 华中科技大学计算机科学与技术学院 C语言程序设计课程设计实验报告 题目:水产品养殖信息管理系统 专业: 计算机科学 ...
- Algorithm:C++语言实现之链表相关算法(链表相加、链表的部分翻转、链表划分、链表去重、重复元素全部删除)
Algorithm:C++语言实现之链表相关算法(链表相加.链表的部分翻转.链表划分.链表去重.重复元素全部删除) 目录 一.链表 1.1.链表相加 1.2.链表相加 2.1.链表的部分翻转 2.2. ...
- c语言 链表 库,玩转C链表
链表是C语言编程中常用的数据结构,比如我们要建一个整数链表,一般可能这么定义: struct int_node { int val; struct int_node *next; }; 为了实现链表的 ...
- 单向链表的C语言实现与基本操作
本文的主要内容目录: 一.单向链表的C语言实现 二.单向链表的基本操作 一.单向链表的C语言实现 链表作为一种基本的数据结构在程序开发过程当中经常会使用到.对C语言来说链表的实现主要依靠结构体和指针, ...
- 成绩管理单链表文件c语言,c语言学生信息管理完整.docx
学生信息管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语言的文件和单链表的各种基本操作.本程序中涉及结构体.单链表.文件等方面的知 识.通过本程序的训练,使学 ...
- c语言链表查找的代码与题目,链表的C语言实现之单链表的查找运算_c语言
建立了一个单链表之后,如果要进行一些如插入.删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作.单链表的基本运算包括:查找.插入和删除.下面我们就一一介绍这三种基本运算的算法,并结合 ...
- 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置
<(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...
最新文章
- php+管道+pipe管道,C++ 匿名管道执行DOS命令
- linux 环境下配置ftp服务器
- ocp 042 第十二章:主动维护
- ionic view 视图
- BZOJ 2243 染色(树链剖分好题)
- c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?
- 浅谈LINQ to SQL集成数据库语言优劣
- H264中I、B、P帧编码原理及pts和dts分析
- 【VB】StrConv函数.
- 如何修改音乐的匹配字数
- Hadoop集群搭建过程中ssh免密码登录(二)
- 修改mongodb oplog size
- 人工智能、大数据、云计算概念
- RFID医疗废物管理系统解决方案-RFID技术的医疗废弃物管理系统
- Excel插入复选框
- mac上安装linux双系统,怎么在台式一体机上安装双系统?
- codeforces 158E. Phone Talks(dp)
- [zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)
- 自己动手「焊」键盘,使用Python编写,一键放连招不在话下!
- 前端原生下载excel表格
热门文章
- SpringMvc解决跨域问题
- C#中使用的yield关键字是什么?
- javascript操作select下拉列表框的一点小经验
- Go实现简单的K-V存储
- 谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集
- 坑中速记整理! 使用 kotlin 写第一个 ReactNative Android 模块
- Laravel5.4重新登陆跳转到登陆前页面的原理和实现
- 《大数据的“道”“术”“释”》----读书摘录+思考
- 关于webrtc视频会议的解决方案
- 解决 MSChart控件 X轴坐标显示不全的问题