字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现
已知一个单链表中的数据元素含有三类字符(即字母字符,数字字符和其它字符),试编写算法,构造三个循环链表,使每个循环链表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间。
实现源代码:
#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++实现的更多相关文章
- 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称
转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...
- 转:链表相交有环 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
源地址:http://blog.csdn.net/sj13051180/article/details/6754228 1.判断单链表是否有环,要求空间尽量少(2011年MTK) 如何找出环的连接点在 ...
- C++ 单链表的基本算法
线性表是最简单,最常用的一种数据结构.线性表的逻辑结构是n个数据元素的有限序列(a1,a2,…,an).而线性表的物理结构,我们已经学习过顺序表,也就是数组 :另一种线性表的物理结构——链表 . 什么 ...
- python实现单链表反转(经典笔试题)
https://blog.csdn.net/su_bao/article/details/81072849 0.说在前面的话 链表结构,说难不难,说易不易,一定要亲自编程实现一下.其次就是一定要耐心, ...
- [数据结构 - 第3章] 线性表之单链表(C++实现)
一.类定义 单链表类的定义如下: #ifndef SIGNALLIST_H #define SIGNALLIST_H typedef int ElemType; /* "ElemType类型 ...
- Java经典案例之-“统计英文字母、空格、数字和其它字符的个数”
/** * 描述:输入一行字符串,并且统计出其中英文字母.空格.数字和其它字符的个数. * 分析:利用for语句,条件为输入的字符不为 '\n ' * 作者:徐守威 */ package com.xu ...
- C语言习题1.分别统计一下其中字母,数字,其他字符的个数。将统计的字母,数字,其他字符的个数以柱状图的形式打印
从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印.例如 5 ***** ***** 3 ***** **** ...
- 强密码和弱密码并没有什么区别?NIST密码安全标准更新:不再建议密码要求混合大写字母、字符和数字
作为一名认真负责的小编,每次注册账号设置密码的时候都是最痛苦的,太简单的怕被破解,太难的又记不住. 等你好不容易记住密码,三个月后IT同学过来拍拍你的肩膀,"你的密码到期了,记得改啊--&q ...
- java统计英文字母、空格、数字和其它字符的数目
package tes; import java.util.Scanner; //java统计英文字母,空格,数字和其它字符的数目 public class ZiFuTongJi { public s ...
随机推荐
- 201709-3 JSON查询
问题描述 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,可以用来描述半结构化的数据.JSON 格式中的基本单元是值 (value),出于简化的目的本题 ...
- 不同主机的docker内容器通过直接路由的方式进行通信
引用文章链接:https://www.cnblogs.com/xiao987334176/p/10049844.html 六.操作总结 修改不同主机上docker默认的网络参数 主机1:192.168 ...
- 【原创】大数据基础之Kudu(4)spark读写kudu
spark2.4.3+kudu1.9 1 批量读 val df = spark.read.format("kudu") .options(Map("kudu.master ...
- Unknown column '字段名' in 'field list' 错误解决方案
当后台报这个错误的时候,说明实体类中的字段名出错了,解决方案: 1,检查数据库中的字段名与实体类中的字段名是否一致,特别要注意单词字母, 2,检查数据库中的字段是否与实体类中的字段一致.比如数据库中没 ...
- 爱上Java诊断利器之Arthas
1. Arthas是什么? 摘自Arthas的Github介绍: Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas al ...
- Myeclipse启动后tomcat空指针异常
今天早上吃完早餐来公司上班,打开电脑,输入密码,123456.....嗯……,再打开myeclipse,duang...duang...duang....tomcat空指针异常,tmd我这暴脾气昨天还 ...
- Java学习笔记【十三、多线程编程】
概念 Java 给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特别的形式,但多线 ...
- php的协程
有关迭代生成器的内容在这篇博客中 协程 协程的支持是在迭代生成器的基础上, 增加了可以回送数据给生成器的功能(调用者发送数据给被调用的生成器函数). 这就把生成器到调用者的单向通信转变为两者之间的双向 ...
- php迭代器Iterator接口
以前也看过迭代器Iterator接口,感觉不如yied好用,因此实际工作中并没有用到过. 今天看了一篇网上的博客(https://www.cnblogs.com/wwjchina/p/7723499. ...
- Samba passwd smbpasswd and tdbsam
ome commands to convert samba backend password-databases. If you use "passdb backend = smbpassw ...