NeuSoft练习5

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

/*  链表节点结构体*/
typedef struct LinkNode
{
 int data;   //数据域
    struct LinkNode *next;//指向下一个节点的指针
}LinkNode;

/****************************************************************************/
//函数名:CreatLinkList
//创作日期:2007.6.24
//功能:创建链表

/****************************************************************************/

LinkNode *CreatLinkList()
{
 int i;
 LinkNode *L = NULL, *p = NULL, *pre = NULL;
 L = (LinkNode*)malloc(sizeof(LinkNode));
 L->next =NULL;
 p = L;
 pre = L;
 /* 采用尾差发依次插入节点*/
 for(i = 0; i < 10; i++)
 {
  p = (LinkNode*)malloc(sizeof(LinkNode));
  /* 节点的数据域取1000以内的随机数*/
  p->data = rand()%1000;

  /* 插入节点*/
  p->next = pre->next;
  pre->next = p;
  
  /* 更新前驱指针*/
  pre = p;
 }
 return L;
}
/****************************************************************************/
//函数名:PrintLink
//创作日期:2007.6.24
//功能:将链表打印输出

/****************************************************************************/

void PrintLink(LinkNode *L)
{
   LinkNode *p = L->next;
   printf("输出链表为:/n");
   while(p)
   {
    printf("%d  ", p->data);
    p = p->next;
   }
}
/****************************************************************************/
//函数名:DispartLinkList
//创作日期:2007.6.24
//功能:将链表进行拆分

/****************************************************************************/

void DispartLinkList(LinkNode *L, LinkNode *Queue[], int location, int divide)
{
 int i, choose;
 /*  p指向当前被拆下来的节点,ptr指向p的后继 */
 /*  pre[10]是一个指向前驱节点的指针数组*/
 LinkNode *p = NULL, *pre[10] = {NULL}, *ptr = NULL;

 assert( L != NULL);

 /*  p初始化为第一个节点  */
 p = L->next;
 /*  ptr与p的初始化相同  */
 ptr = p;

 for(i = 0; i < 10; i++)
 {
  /*  为指针数组Queue[i]分配头节点*/
  Queue[i] = (LinkNode *)malloc(sizeof(LinkNode));
  if( Queue[i] == NULL)
  {
   printf("malloc error!");
   exit(1);
  }
  /* 并分别用pre[i]指向个头节点 */
  pre[i] = Queue[i];
  pre[i]->next = NULL;
 }
 
 /* 如果当前拆分节点不为空的话*/
 while(p)
 {
  /* 保存当前节点的下一个节点 */
  ptr = p->next;
  /* 将当前指向的节点从链表中拆下*/
  L->next = p->next;

  if(location == 0)
  {
   choose = p->data / divide;
  }
  else if(divide == 0)
  {
   choose = p->data % location;
  }
  else
  {
   choose = p->data % location / divide;
  }
  switch(choose)
  {
   case 0:
    {
     /* 用尾差发将p指向的节点插入 */
     p->next = pre[0]->next;
     pre[0]->next = p;
        pre[0] = p;
     break;
    }
   case 1:
    {
     p->next = pre[1]->next;
     pre[1]->next = p;
     pre[1] = p;
     break;
    }
      case 2:
    {
     p->next = pre[2]->next;
     pre[2]->next = p;
        pre[2] = p;
     break;
    }
   case 3:
    {
     p->next = pre[3]->next;
     pre[3]->next = p;
        pre[3] = p;
     break;
    }
   case 4:
    {
     p->next = pre[4]->next;
     pre[4]->next = p;
        pre[4] = p;
     break;
    }
   case 5:
    {
     p->next = pre[5]->next;
     pre[5]->next = p;
        pre[5] = p;
     break;
    }
   case 6:
    {
     p->next = pre[6]->next;
     pre[6]->next = p;
        pre[6] = p;
     break;
    }
   case 7:
    {
     p->next = pre[7]->next;
     pre[7]->next = p;
        pre[7] = p;
     break;
    }
   case 8:
    {
     p->next = pre[8]->next;
     pre[8]->next = p;
        pre[8] = p;
     break;
    }
   case 9:
    {
     p->next = pre[9]->next;
     pre[9]->next = p;
        pre[9] = p;
     break;
    }
  }
  p = ptr;

 }
}

/****************************************************************************/
//函数名:PrintDispartLink
//创作日期:2007.6.24
//功能:打印被拆分的队列链表

/****************************************************************************/
void PrintDispartLink(LinkNode *Queue[])
{
 int i;
 printf("/n输出拆分的队列链表为/n");
 for(i = 0; i < 10; i++)
 {
  LinkNode *p = Queue[i];
  p = p->next;
  while(p)
  {
   printf("  %d", p->data);
   p = p->next;
  }
  printf("/n");
 }
}
/****************************************************************************/
//函数名:CollectLinkList
//创作日期:2007.6.24
//功能:将链表进行收集

/****************************************************************************/

LinkNode *CollectLinkList(LinkNode *Queue[])
{
 /*  p用于指向当前用于进行操作的节点*/
 /*  pre指向p的前驱,ptr指向p的后继*/
 LinkNode *p = NULL, *pre = NULL, *ptr = NULL;
 int i;
 /*  分配头节点*/
 LinkNode *L = (LinkNode*)malloc(sizeof(LinkNode));
 /*  头节点的next域必须初始化为NULL*/
 L->next = NULL;
 /*  分别对pre和ptr进行付值*/
 pre = L;
 ptr = L;

 for(i = 0; i < 10; i++)
 {
  /* 依将指针数组中的各个地址付给p*/
  p = Queue[i]->next;
  /* 如果p存在的话*/
  while(p)
  {
   /* 保存p的后继指针*/
   ptr = p->next;

   /* 将拆分链表的节点取下,放入单链表中*/
   p->next = pre->next;
   pre->next = p;

   /* 更新前驱指针*/
   pre = p;
   /* 更新后继指针*/
   p = ptr;
  }
 }
 /* 返回头指针*/
 return L;
}
/****************************************************************************/
//函数名:FreeLinkList
//创作日期:2007.6.24
//功能:释放单链表

/****************************************************************************/

void FreeLinkList(LinkNode *L)
{
 
 LinkNode *p = NULL, *ptr = NULL;
 assert(L != NULL);
 p = L;
 ptr = p;
 while(p)
 {
  /* 保存后继指针*/
  ptr = ptr->next;
  free(p);
  p = NULL;
  /* 更新当前指针*/
  p = ptr;
 }

}

void FreeDispartLinkList(LinkNode *Queue[],int n)
{
 int i;
 for(i = 0; i < n; i++)
 {
  free(Queue[i]);
  Queue[i] = NULL;
 }

}

int main()
{
 /* 定义一个指针数组*/
 LinkNode *QueueLink[10];
 /* 定义一个头节点用于指针的传递*/
 LinkNode *Head;
 
 /* 创建链表并打印输出链表*/
 Head = CreatLinkList();
 PrintLink(Head);


 /* 按十位拆分链表*/
 DispartLinkList(Head, QueueLink, 10, 0);
 /* 销毁刚才创建的单链表*/
 FreeLinkList(Head);
 /* 打印拆分后的链表*/
 PrintDispartLink(QueueLink);
 /* 收集链表重新生成一个单链表*/
 Head = CollectLinkList(QueueLink);
 /* 释放拆分链表的头节点*/
 FreeDispartLinkList(QueueLink, 10);
 /* 打印新生成的链表*/
 PrintLink(Head);


 
 /* 按十位拆分链表*/
 DispartLinkList(Head, QueueLink, 100, 10);
 /* 销毁刚才创建的单链表*/
 FreeLinkList(Head);
 /* 打印拆分后的链表*/
 PrintDispartLink(QueueLink);
 /* 收集链表重新生成一个单链表*/
 Head = CollectLinkList(QueueLink);
 /* 释放拆分链表的头节点*/
 FreeDispartLinkList(QueueLink, 10);
 /* 打印新生成的链表*/
 PrintLink(Head);

 /* 按百位拆分链表*/
 DispartLinkList(Head, QueueLink, 0, 100);
 /* 销毁刚才创建的单链表*/
 FreeLinkList(Head);
 PrintDispartLink(QueueLink);
 Head = CollectLinkList(QueueLink);
 /* 释放拆分链表的头节点*/
 FreeDispartLinkList(QueueLink, 10);
 PrintLink(Head);

}

东软始业教育内容提纲(附题目 及答案) 可参考 https://blog.csdn.net/chenggongcheng/article/details/8623836 ======================汇总========================= 阅读详情

相关推荐

2021东软始业教育考试

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_44942631的博客 1万+

NeusoftMediaPlayer(实验)

NeusoftMediaPlayerNeusoftMediaPlayerNeusoftMediaPlayer

东软集团业务的波特五力模型分析

东软集团介绍:         东软是一家面向全球提供IT解决方案与服务的公司,致力于通过创新的信息化技术来推动社会的发展与变革,为个人创造新的生活方式,为社会创造价值。公司创立于1991年,目前拥有近20000名员工,在中国建立了8个区域总部,10个软件研发基地, 16个软件开发与技术支持中心,在60多个城市建立营销与服务网络; 在美国、日本、欧洲、中东、南美设有子公司。东软是中国第一个上市的

XiufengWu的博客 2万+

Neusoft Media Player 最后整合版Neusoft Media Player 最后整合版

Neusoft Media Player 最后整合版Neusoft Media Player 最后整合版Neusoft Media Player 最后整合版Neusoft Media Player 最后整合版

过滤器参考

编码过滤器:package com.filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax

Simpson_wu的博客 384

@neusoft

hubot elastic

java308077007 365

R6-5 求链式表的表长(东软DS2025春第2周练习

其中ListL是给定单链表,函数Length要返回链式表的长度。

2401_82603784的博客 353

东软 内部员工离职述说

东软 内部员工离职述说

qq_43667111的博客 9445

东软2020始业教育 答案

一、单选题 1东软品牌的核心理念:1分/1分 A、超越梦想Beyond Dreaming B、超越技术,超越梦想 C、超越技术的应用智慧Beyond Technolog D、软件创造价值 提交答案:C正确答案:C 展开解析 2 社保五险个人承担比例总计(城市户口)() 1分/1分 A、21% B、20% C、10.5% D、10% 提交答案:C正确答案:C 展开解析 3关于软件的安全使用,下列哪项描述不正确1分/1分 A、计算机终端上禁止安装游戏类、P2P类、在线播放类等与工作无关的软件 B、为满足工作需要

qq_40583869的博客 2万+

东软,内部员工离职述说

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怀着对软件的梦想,我来

hffyyff的博客 2万+

东软始业教育考试2023

东软始业教育考试2023

weixin_69821704的博客 1万+

Neusoft机房改善计划

发这篇文章的时候,用来搭建代理的服务器已经被关闭了,管理员找到了我的主机,并封锁了我对其他内网网段的访问 =================================================================================== 来东软实习还是很不情愿的,来之前听学长讲述了东软的种种罪行,宿舍里爬满了虫子,衣服洗一次一个星期不干,天天下雨,偶尔去食堂

王意林的专栏 2240

八年改制 东软归一

“今天一直在忙着搬家。”4月20日,东软集团董事长刘积仁告诉本报记者,这次搬家是为了让东软原来的“两套班子”搬到一起,真正变成一套班子。所谓两套班子,指东软整体上市前,上市公司东软股份(600718.SH)一套班子,东软股份控股股东软集团一套班子。集团上市对于东软而言意义重大,为迎接这一天,东软已经进行了8年的准备。在沈阳浑南新区东软软件园,一座全钢架构,灰色玻璃幕墙的大楼刚刚建好,这将成

风往哪吹~ 1384

东软始业教育考试-part1

东软始业教育考试

Missper~ 5079

东软始业教育考试-part2

东软始业教育考试

Missper~ 4231

东软已经失去发展的动力了吗(转自东软内网)

这里没有药方,只有观点。或许这样的刺激小一些——对那些做着拿退休金的梦想的人们。 失去了对改善的渴望,就是失去了发展的动力。 当我们对我们周围的一切都开始变得更加有耐性了,对周遭的一切,都已经习以为常了,那么,我们就失去的变革的动力。 当我们在做事情的时候,只在乎是谁在命令我们做事情,而忘了问:“为什么我们要做这件事情?为什么我要这样做?”的时候,我们就事情变革的动力。 沈阳东软的食堂出现了多少年

neusoft818的专栏 3509

东软始业教育结业考试

东软始业教育结业考试

qq929371786的博客 4812

成都东软学院计算机很强吗,成都东软学院怎么样 好不好

高考过后就是填报志愿,有许多人从重要性上将其称之为第二次高考。还有更多的过来人坦言“考得好不如报得好”,每个想要报考成都东软学院同学和家长一定都想要了解成都东软学院怎么样和成都东软学院好不好就成了广大考生和家长朋友十分关心的问题。下面是高三网根据多方面资源信息整理的有关成都东软学院的评价,相信您看完以下评价,心里一定有数了。成都东软学院简介成都东软学院是经教育部批准设立,由东软联合亿达投资创办的一...

weixin_34304211的博客 1987
上一篇: 编程修养
下一篇: NeuSoft练习4(文件的各种操作)
lsk_30516
博客等级 码龄20年 36粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值