已知一个单链表中的数据元素含有三类字符(即字母字符,数字字符和其它字符),试编写算法,构造三个循环链表,使每个循环链表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间。

实现源代码:

#include<iostream>

#include<stdio.h>

#include<string.h>

using namespace std;

struct node

{

char ch;

node*link;

};

//为了方便输出,定义一个输出字符的函数,适用于单链表

void printlist(node*h)

{

node *first=h;

while(first!=NULL)

{

cout<<first->ch;

first=first->link;

}

}

void printcirclelist(node*p)

{

node *first=p;

while(true)

{

cout<<first->ch;

first=first->link;

if(first==p)break;

}

}

bool is_num(char c)

{

if(c>='0'&&c<='9')return true;

else return false;

}

bool is_eng(char c)

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return true;

else return false;

}

bool is_else(char c)

{

if(!is_num(c)&&!is_eng(c))return true;

else return false;

}

int main()

{

//下面构造一个字符单链表

node *list_head=new node();

node *p=list_head;

char ch[100]="235543kj45i##%GGG%%&&hd7&&&";

for(int i=0;i<27;i++)

{

if(i!=0)

{

p->link=new node();

p=p->link;

}

p->ch=ch[i];

}

p=NULL;

printlist(list_head);

//数字循环链表

node*head1=new node();

//字母循环链表

node*head2=new node();

//其它字符循环链表

node*head3=new node();

//下面从"235543kj45i##%GGG%%&&hd7&&&"中提取数字,字母和其他字符

node *pointer=list_head;

node*p1=head1;

node*p2=head2;

node*p3=head3;

while(pointer!=NULL)

{

if(is_num(pointer->ch)){p1->link=pointer;p1=p1->link;}

if(is_eng(pointer->ch)){p2->link=pointer;p2=p2->link;}

if(is_else(pointer->ch)){p3->link=pointer;p3=p3->link;}

pointer=pointer->link;

}

//下面将进行首尾相接

p1->link=head1;

p2->link=head2;

p3->link=head3;

//至此循环链表建立完成

cout<<endl;

printcirclelist(head1);

cout<<endl;

printcirclelist(head2);

cout<<endl;

printcirclelist(head3);

return 0;

}

运行结果截图:

(可见该算法可以将三种不同的字符识别出来并构造循环链表)

字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现的更多相关文章

  1. 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称

    转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...

  2. 转:链表相交有环 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

    源地址:http://blog.csdn.net/sj13051180/article/details/6754228 1.判断单链表是否有环,要求空间尽量少(2011年MTK) 如何找出环的连接点在 ...

  3. C++ 单链表的基本算法

    线性表是最简单,最常用的一种数据结构.线性表的逻辑结构是n个数据元素的有限序列(a1,a2,…,an).而线性表的物理结构,我们已经学习过顺序表,也就是数组 :另一种线性表的物理结构——链表 . 什么 ...

  4. python实现单链表反转(经典笔试题)

    https://blog.csdn.net/su_bao/article/details/81072849 0.说在前面的话 链表结构,说难不难,说易不易,一定要亲自编程实现一下.其次就是一定要耐心, ...

  5. [数据结构 - 第3章] 线性表之单链表(C++实现)

    一.类定义 单链表类的定义如下: #ifndef SIGNALLIST_H #define SIGNALLIST_H typedef int ElemType; /* "ElemType类型 ...

  6. Java经典案例之-“统计英文字母、空格、数字和其它字符的个数”

    /** * 描述:输入一行字符串,并且统计出其中英文字母.空格.数字和其它字符的个数. * 分析:利用for语句,条件为输入的字符不为 '\n ' * 作者:徐守威 */ package com.xu ...

  7. C语言习题1.分别统计一下其中字母,数字,其他字符的个数。将统计的字母,数字,其他字符的个数以柱状图的形式打印

    从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印.例如 5 ***** *****     3 *****   **** ...

  8. 强密码和弱密码并没有什么区别?NIST密码安全标准更新:不再建议密码要求混合大写字母、字符和数字

    作为一名认真负责的小编,每次注册账号设置密码的时候都是最痛苦的,太简单的怕被破解,太难的又记不住. 等你好不容易记住密码,三个月后IT同学过来拍拍你的肩膀,"你的密码到期了,记得改啊--&q ...

  9. java统计英文字母、空格、数字和其它字符的数目

    package tes; import java.util.Scanner; //java统计英文字母,空格,数字和其它字符的数目 public class ZiFuTongJi { public s ...

随机推荐

  1. win10的修改hosts文件

    1.找到hosts文件 2.右键hosts文件 -> 属性  -> 安全 ->  编辑 3.依次选中用户组用户组,完全控制打钩,点击应用,点击确定,完成. 一般情况下这样就能修改了 ...

  2. Python学习8——魔法方法、特性和迭代器

    Python中很多名称比较古怪,开头和结尾都是两个下划线.这样的拼写表示名称有特殊意义,因此绝不要在程序中创建这样的名称.这样的名称中大部分都是魔法(方法)的名称.如果你的对象实现了这些方法,他们将在 ...

  3. Leaf Sets CodeForces - 1042F (树,最小划分)

    大意: 给定树, 求叶子的最小划分, 使得每个划分内任意两个叶子距离不超过k. 任选一个非叶结点, 贪心合并. #include <iostream> #include <sstre ...

  4. C# HttpWebRequest向远程地址Post文件

    HttpWebRequest向远程地址Post文件 /// <summary> /// 上传文件到远程服务器 /// </summary> /// <param name ...

  5. Resource Model

    API不应该直接返回Entity,应该是返回一个Resource,不想把entity内部的细节暴漏给外部 viewModel是在MVC中的叫法 使用AutoMapper来对Entity和Resourc ...

  6. 用winform实现一个B/S代码更新打包工具

    一个.net程序员必须拥有的能力就是可以随时随地写出一个自己需要的小工具,于是记录一下我的个人工具吧. 新建一个窗体应用项目,代码如下: namespace 打包工具 { partial class ...

  7. Mac之常见问题

    1. 在命令行下无法使用ll命令 需要设置命令的别名. 文件位置:-/.bash_profile source ~/.profile export PATH="/usr/local/opt/ ...

  8. js相关的时间获取方法

    1.获取时间 var time=new Date();//返回的是GMT,格林尼治标准时间. console.log(time)://Thu Jul 27 2017 16:55:21 GMT+0800 ...

  9. WebStorm 启动时提示Failed to load JVM DLL

    环境:win7 64位:时间:2019-11-18 问题描述 启动webstorm 时提示failed to load JVM DLL 解决方法 启动时快捷方式要选到64位的exe

  10. Html-自适应

    自适应 使网页能适应不同终端设备的技术.原理是通过检测视口分辨率来判断是什么终端的,PC,手机还是平板. 做自适应的网页时,需要在代码中加入“祖传代码”,即通用代码. 这是在头部head引入的: &l ...