数据结构字符统计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:字符分类频率统计

一、实验名称:

字符分类频率统计

二、实验目的:

将给定的字符串按数字字符,字母字符,其它字符三类进行链式分类存储并且打印出来。

三、实验内容及要求:

将给定的字符串按数字字符,字母字符,其它字符三类进行分类存储,统计各类字符出现的总个数。

四:概要设计:

void Mylist::Insert(char x)

{

Node *p,*q;

p=first;

while (p->next&&p->next->c

p=p->next;

if(p->next&&p->next->c==x)

p->next->count++;

else

{

q=new Node;

q->c=x;

q->count=1;

q->next=p->next;

p->next=q;

}

first->count++;

}

五:详细程序

#include

using namespace std;

#define Maxsize 255

struct Node

{

char c;

int count;

Node *next;

};

class Mylist

{

private:

Node *first;

public:

Mylist();

void Insert(char x);

void PrintList();

};

Mylist::Mylist()

{

first=new Node;

first->next=NULL;

first->count=0;

}

void Mylist::PrintList()

{

Node *p;

p=first->next;

while (p)

{

cout<< p->c<<":["<count<<"]"<<" ";

p=p->next;

}

cout<count<<"\n"; }

void Mylist::Insert(char x)

{

Node *p,*q;

p=first;

while (p->next&&p->next->c

p=p->next;

if(p->next&&p->next->c==x)

p->next->count++;

else

{

q=new Node;

q->c=x;

q->count=1;

q->next=p->next;

p->next=q;

}

first->count++;

}

int kind(char a)

{

if(a<='9'&&a>='0')

return 0;

else if(a>'a'&&a<='z'||a>'A'&&a<='Z') return 1;

else

return 2;

}

void main()

{

cout<<"请输入要判断的字符串! ";

char s[Maxsize];

gets(s);

Mylist L[3];

for(int i=0;i

{

char ch=s[i];

int k=kind(ch);

L[k].Insert(ch);

}

for(i=0;i<3;i++)

L[i].PrintList();

}

六:实验调试

七:实验心得

实验过程中的主要困难在于如何构建链表,可以考虑定义一个指针数组,形成三个分别存储字母,数字,其他字符的链表,这里采用的是老师ppt里面的定义一个类对象的数组,其实主要部分都差不多,将字符串里面的每个字符进行分类统计,链表里面,没有则创建一个结点来存储,如果有则将count++;

刚开始只是一个劲儿在想啊想的,结果呆呆做了半天只把人纠结了,写的代码就一乱码,所以动手前还是应该现在草稿子上写出基本的方法,入口,就如老师课件上的,把基本流程写下来。

朱柳—计科1011—2010117156

相关文档
最新文档