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

实现源代码:

#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. nop4.1用2008r2的数据库

    修改appsetting.json

  2. GTA4 EFLC cheat code

    GTA4 EFLC cheat code 提示警告:您的图像设置接近或超出您的系统推荐资源限制,为了使游戏运行更加流畅推荐你降低你的图像设置. 在游戏目录新建名为 commandline的txt文本文 ...

  3. O042、Live Migrate 操作

    参考https://www.cnblogs.com/CloudMan6/p/5554549.html   Migrate 操作会先将Instance停掉,也就是所谓的 冷迁移 .而 Live Migr ...

  4. Selenium 基本使用

    from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.c ...

  5. vim之快捷键

    Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版.尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是 ...

  6. Rsyslog服务器的安装与配置

    一.Rsyslog服务器的安装与配置 1.清空iptabels, 关闭selinux避免安装过中报错 清空iptables iptables -F service iptables save 关闭se ...

  7. css高度居中

    1.已知元素高度 // 子盒子 #div1{ width:200px; height:200px; position: absolute; //父元素需要相对定位 top: 50%; left: 50 ...

  8. 创建LEANGOO看板

    转自:https://www.leangoo.com/leangoo_guide/leangoo_guide_create_kanban.html#toggle-id-3 Leangoo使用看板来管理 ...

  9. functools:管理函数的工具

    介绍 functools模块提供了一些工具来管理或扩展和其他callable对象,从而不必完全重写 修饰符 偏函数partial from functools import partial ''' f ...

  10. 利用PyMySQL模块操作数据库

    连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect( host="127.0.0.1", # 数据库服务器主机地 ...