#if 1
#include<stdio.h>
#include<stdlib.h>
#include<iostream> using namespace std; struct Node
{
int data;
Node *next;
}; //初始化
Node *init()
{
Node *head=new Node;
head->next=NULL;
return head;
} //头插法创建节点
void insetList(Node *head,int i)
{
Node *cur=new Node; cur->data=i; cur->next=head->next;
head->next=cur;
} //链表A,B生成
void CreateList(Node *head_A)
{
for(int i=-8;i<10;i++)
{ insetList(head_A,++i);
}
} //打印链表
void print(Node *head)
{
Node *temp=head->next; //防止头指针移动
while(temp)
{
cout<<temp->data<<" ";
temp=temp->next; }
} //拆分链表A,链表C源于A。生成链表B
void SplitList(Node *head_A,Node *List_C,Node *List_B)
{
Node *pa=head_A->next; //pa指向链表A的首元节点 Node *pc=List_C; //pc指向C的头节点,为移动指针是为了保持头指针不变 Node *pb=List_B; //链表head_B头指针给pb,pb为移动指针是为了保持头指针不变 while(pa) //A链表遍历结束即退出
{
if(pa->data < 0)
{
pc->next=pa; //先存A链表的节点
pc=pa; //pc指向pa,pc前进一个节点
} //尾插法创建B链表
else
{
Node *cur=new Node; //生成B链表节点
cur->data=pa->data; //将A表大于0的数据存入链表B中 pb->next=cur; //pb指向新生成的节点
cur->next=NULL; //将新节点指针域置空
pb=cur; //pb移动至新节点位置 }
pa=pa->next; //pa向A链表下一节点移动
} } void main()
{
Node *head_A=init(); //链表A初始化头节点
Node *List_B=init(); //链表B初始化头节点 //链表C初始化,结构体指针记得初始化头节点
Node *List_C=head_A; // //创建链表A
CreateList(head_A); //打印链表A
cout<<"链表A为:"<<endl;
print(head_A);
cout<<endl; //调用函数分拆链表A
SplitList(head_A,List_C,List_B); //打印链表C
cout<<endl<<"链表List_C为:"<<endl;
print(List_C); //打印链表B
cout<<endl<<"链表List_B为:"<<endl;
print(List_B);
cout<<endl; system("pause"); }
#endif

  

c语言——单链表分拆——头插法创建链表,尾插法生成链表的更多相关文章

  1. HashMap 链表插入方式 → 头插为何改成尾插 ?

    开心一刻 一天,楼主在路上碰到了一个很久没见的朋友,找了个餐馆,坐下聊了起来 楼主:在哪上班了 ? 朋友:火葬场啊 楼主:在那上班,一个月多少钱啊 ? 朋友:两万多啊 楼主(不可思议):多少 ? 朋友 ...

  2. C实现头插法和尾插法来构建单链表(不带头结点)

    链表的构建事实上也就是不断插入节点的过程.而节点的插入能够分为头插法和尾插法. 头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点. ...

  3. C实现头插法和尾插法来构建单链表(带头结点)

    我在之前一篇博客<C实现头插法和尾插法来构建单链表(不带头结点)>中具体实现了怎样使用头插法和尾插法来建立一个不带头结点的单链表,可是在实际使用中.我们用的最多的还是带头结点的单链表.今天 ...

  4. Java解释单链表中的头插法以及尾插法

    单链表属于数据结构中的一种基本结构,是一种线性结构,在此使用Java对其中的头插法以及尾插法进行解释. 首先定义好链表中的节点类: 其中,data代表节点所存放的数据,next代表指向下一节点 对于单 ...

  5. 如何用尾插法建立双链表(C语言,非循环)

    如何用尾插法建立双链表 其实本来是想完成汪队给的链表快排的作业,但是我写完建立双链表以后就12点了龟龟,明天还要早起QAQ,我菜死了 一,为啥要有双链表 先说单链表吧单链表长这样 他的一个结点结构就是 ...

  6. 7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)

    给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输出格式 ...

  7. 尾插法-实现链表反转(有点bug,以后再来研究下)

    def func2(head): p = head.next while p.next: q = p.next p.next = q.next # 重点 head.next = q q.next = ...

  8. LinkedList 利用的是尾插法

  9. C语言单链表的实现

    // //  main.c //  gfhjhgdf // //  Created by chenhao on 13-12-23. //  Copyright (c) 2013年 chenhao. A ...

随机推荐

  1. svn 的权限配置

    #分配用户所属组 g_admin=admin g_ui=zhangsan,lisi g_code=wangwu g_test=zhaoliu,qianqi #分配目录权限 #表示项目根目录 [/] @ ...

  2. 多重if-else语句

    C语言自学之多重if-else语句 Dome : 某游戏对不同等级的积分的玩家赋予不同的荣誉称号,其对应关系如下: 积分>=10000分为钻石玩家 积分>=5000并且<10000为 ...

  3. Emacs中的代码折叠控制

    之前在别的编辑器里用到代码折叠的功能很好用. 对 Emacs 不够熟悉,作为一只坚强的懒癌晚期患者,一直没开启这个功能,使用石器时代的标记法来记录每个结构的起止位置,效率可想而知. 今天可算是找着它啦 ...

  4. 转载:Shell 脚本加密 - 略有修改

    shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件. shc 安装 yum -y install shc 如果yum不能安装,请移步官方下载rpm包 http ...

  5. logging 使用的一些问题

    python 脚本加载是递归加载,被引用的脚本要先与调用者脚本加载,所以不能在函数外部获取logger,否则会导致配置被错过

  6. Linux c使用gumbo库解析页面表单信息(二)

    一.如何在程序当中使用gumbo? 要想在代码中使用gumbo,仅仅包含gumbo头文件是不够的,必须在编译程序的时候加上-lgumbo选项,编译程序才会链接到gumbo库上面. 这是我编译gumbo ...

  7. asp.net IHttpModule浅析

    在asp.net程序中,我们除了使用系统自带的HttpModule模块,还可以自己定义一些自己的HttpModule接口模块.一个asp.net程序可以接收多个HttpModule模块. 众所周知,a ...

  8. PC/FORTH 下的多任务使用

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. egret 简单的一笔画算法,在wing中可以直接跑(以后玩这类游戏就有个作弊器了)

    /** * 在Main中创建游戏场景 * Create a game scene */ private createGameScene() { MtwGame.Instance.init(this.s ...

  10. Eclipse控制台输出log日志中文乱码

    今天在工作中,调试程序的时候突然发现控制台的log日志,输出的中文全都是乱码. 看到这就在想,这是项目编码还是log.xml编码配置被改掉了呢?于是统统检查了一遍发现所有的编码格式都是统一用的utf- ...