先封装一个单链表LA,引用Creat()函数利用尾插法来生成链表,先输入n值来确定单链表中数据元素的个数,然后通过键盘输入元素,创建3个空链表来存放三种不同字符类型,通过Match()中的ASCII码值来判断字符类型,通过Insert()插入之前的三个空链表中。最后将三个空链表通过Circular()完成循环链表。

#include "stdafx.h"
#include "stdlib.h"//封装单链表
typedef struct node
{char data;struct node *next;
}LNode,*PLinkList;//尾插法创建链表
PLinkList Create()
{   PLinkList p, q, head;//定义三个指针,其中p类似一个辅助指针吧,用来存放所输入的链表数据 int n;int i = 0;head = (PLinkList)malloc(sizeof(node));head->next = NULL;//令表为空q = head;printf("你想要输入多少个数据:\n");scanf("%d", &n);printf("请输入字符:\n");for (i = 0; i <= n; i++){p = (PLinkList)malloc(sizeof(node));//创建数据节点scanf("%c", &p->data); p->next = q->next;q->next = p;q = p;}return head;
}//创建空表:
PLinkList CreatNULL()
{PLinkList head;head = (PLinkList)malloc(sizeof(node));head->next = NULL;//令表为空return head;
}//输出打印链表:
void Showlist(PLinkList L)
{PLinkList p;p = L->next;while (p != NULL){printf("%c,", p->data);p = p->next;}
}//将单链表变成循环链表
void Circular(PLinkList L)
{PLinkList p;p = L;if (p->next){p = p->next;}p->next = L;
}void Insert(PLinkList &L, int i, char e)//在带头结点的单链表L中第i个数据元素之前插入数据元素
{PLinkList s, p;int j;p = L;for (j = 0; p && j<i - 1; j++)p = p->next;if (!p || j>i - 1)printf("i值错误\n");s = (PLinkList)malloc(sizeof(LNode));s->data = e;s->next = p->next;p->next = s;
}//将输入的字符进行分类:
void Match(PLinkList L, PLinkList &LA, PLinkList &LB, PLinkList &LC)//将元素分类
{PLinkList p;int i = 1, j = 1, k = 1;p = L->next;while (p){//ASCII码33-47和58-63为字符,48-57为数字,65-90和97-122分别为大写字母和小写字母if (((p->data)>64 && (p->data)<91) || ((p->data)>96 && (p->data)<123)){Insert(LA, i++, p->data);}else if ((p->data)>47 && (p->data)<58){Insert(LB, j++, p->data);}else{Insert(LC, k++, p->data);}p = p->next;}
}void main()
{PLinkList L;PLinkList LA;PLinkList LB;PLinkList LC;L = Create();printf("输入的字符为:\n");Showlist(L);printf("\n");LA = CreatNULL();LB = CreatNULL();LC = CreatNULL();Match(L, LA, LB, LC);printf("输出字母:\n");Showlist(LA);printf("\n");printf("输出数字:\n");Showlist(LB);printf("\n");printf("输出符号:\n");Showlist(LC);printf("\n");Circular(LA);Circular(LB);Circular(LC);
}

已知由一个线性链表表示的线性表中含有 3 类字符的数据元素(如:字母,数字和其他字符),试编写算法将该线性链表分割为 3 个循环链表,其中每个循环链表均只含有一类字符。相关推荐

  1. 数据结构例1.已知顺序表L的长度为n,试编写算法实现在顺序表中删除值为elem的数据元素

    //已知顺序表L的长度为n,试编写算法实现在顺序表中删除值为elem的数据元素 //(其中n与elem从键盘输入) # include <iostream> # include <s ...

  2. 已知一棵完全二叉树存于顺序表sa中,sa.elem[1..sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表。

    已知一棵完全二叉树存于顺序表sa中,sa.elem[1-sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表. 分析:由二叉树的性质可知,一个下标为i的节点若有左子树,则其左 ...

  3. C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分

    4 C语言编程题--结构体 **设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中.请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有 ...

  4. Golang数组练习题:已知有一个排序好的升序数组,要求插入一个元素,最后打印该数组,顺序依然是升序

    已知有一个排序好的升序数组,要求插入一个元素,最后打印该数组,顺序依然是升序 package mainimport ("fmt" )func main() {/*已知有一个排序好的 ...

  5. 概率问题,已知其中一个是女孩,另一个也是女孩的概率是多少?

    今日关于这个是1/2还是1/3争议不断,在这里,我发布下我自己的见解. 首先这是个条件概率,我们另事件A为其中一个是女孩. 事件B为:这两个孩子是女女: 根据条件概率公式 P(A|B) = P(A)/ ...

  6. 斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子。

    [01]斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子. 第i月份 大兔子 小兔子 总兔子 1 0 1 1 2 1 ...

  7. 已知有一个名为MyServlet的程序,程序可向浏览器输出“Hello MyServlet”。请编写一个用于拦截MyServlet程序的MyFilter拦截器。

    1:题目详情: 已知有一个名为MyServlet的程序,程序可向浏览器输出"Hello MyServlet".请编写一个用于拦截MyServlet程序的MyFilter拦截器. 要 ...

  8. C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。

    已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...

  9. C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:

    例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...

最新文章

  1. call(),apply()和bind()的详解使用:
  2. 基于tcpdump的Android智能移动终端数据包捕获完整解决方案
  3. 如何让IDEA启动多个SpringBoot实例
  4. 何樱c语言,C语言程序设计-电子教案-连卫民(442页)-原创力文档
  5. jQuery的name选择器 模糊匹配
  6. html设置数字显示位数,数字万用表的显示位数和精度
  7. SpringBoot—JPA: javax.persistence.TransactionRequiredException
  8. 《Reids 设计与实现》第二章 字典
  9. LeetCode刷题(26)
  10. .Net下RabbitMQ的使用(4) -- 订阅和发布
  11. 花店管理系统php网站,网上花店管理系统下载_网上花店管理系统官方下载-太平洋下载中心...
  12. 层次分析法(AHP)介绍
  13. 我是程序员,我在小区“收垃圾”
  14. 音乐鉴赏 周海宏 网络课程 题库(Ctrl+f查找)点赞哦
  15. 有道云脑图 mindmap文件必须会员才能导出
  16. JavaScript - 动画介绍与学习
  17. 企鹅号15种赚钱方法?企鹅如何快速收益?
  18. qt Redis使用
  19. 前端基础-Node.js核心模块的使用
  20. multisim怎么设置晶体管rbe_multisim中三极管参数

热门文章

  1. 存储介质(2)FLASH
  2. uni-app 项目 封装http 和url
  3. Linux好用命令之lsof命令
  4. Hihocoder 1430 A Boring Problem (数论)
  5. javaweb项目接入CAS单点认证(含自身系统的三员过滤)
  6. Towards Ultra-Resolution Neural Style Transfer via Thumbnail Instance Normalization
  7. Termux安装openssh
  8. C语言———字符与字符串
  9. 施工企业数字化转型的成功的关键要素:数据、算力、算法
  10. MCPcounter估计免疫浸润细胞丰度