当前位置:首页 > 编程笔记 > 正文
已解决

C++ 统计一个字符串当每个字符出现的权重。

来自网友在路上 199899提问 提问时间:2023-11-05 21:14:39阅读次数: 99

最佳答案 问答题库998位专家为你答疑解惑

abbccc$b

b:2

本题目为第一步,读入待编码字符串,建造一个森林,请补全下列代码。


#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef char elemtype;


//带权值的二叉树

typedef struct BiTNode{
elemtype data;
int weight; //权重
struct BiTNode *lchild, *rchild; /*左右孩子指针*/
}BiTNode,*BiTree;

//用单链表表示森林

typedef struct linkNode{
BiTree tree;
struct linkNode *next;
}LinkNode, *Forest;
//创建森林

int createForest(Forest forest){
//待补全,读入字符串,以‘$'为结束符,根据每个字符出现频率为权值,构造森林。并返回森林中树的个数

}


int main()
{Forest forest = malloc(sizeof(linkNode));
//森林的单链表包含一个头结点,头结点符号‘$'

forest->tree = malloc(sizeof(BiTNode));
forest->tree->data = '$';
forest->next = NULL;createForest(forest);

char ch1;
scanf("%c", &ch1);
linkNode * p = forest->next;
while (p != NULL)
{
if (p->tree->data == ch1)
{
printf("%c:%d\n", p->tree->data, p->tree->weight);
}
p = p->next;
}

}


输入
abbccc$b
输出
b:2


样例输入 Copy
hello world$l
样例输出 Copy
l:3
提示
只需要补全并提交以下代码:


//创建森林

int createForest(Forest forest){
//待补全,读入字符串,以‘$'为结束符,根据每个字符出现频率为权值,构造森林。

}

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>typedef char elemtype;//带权值的二叉树
typedef struct BiTNode {elemtype data;int weight; //权重struct BiTNode* lchild, * rchild; /*左右孩子指针*/
}BiTNode, * BiTree;//用单链表表示森林
typedef struct linkNode {BiTree tree;struct linkNode* next;
}LinkNode, * Forest;//创建森林
int createForest(Forest forest)
{//待补全,读入字符串,以‘$'为结束符,根据每个字符出现频率为权值,构造森林。并返回森林中树的个数int count = 0; // 森林中树的个数BiTree tree;LinkNode* p = forest;char ch;char list[128] = {0};scanf("%c", &ch);while (ch != '$') {scanf("%c", &ch);list[ch] += 1;}for (int i = 0; i < 128; i++) {if (!list[i])continue;tree = (BiTNode*)malloc(sizeof(BiTNode));tree->data = i;tree->weight = list[i];tree->lchild = NULL;tree->rchild = NULL;LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));newNode->tree = tree;newNode->next = NULL;p->next = newNode;p = p->next;count++;}return count;
}int main()
{Forest forest = (linkNode*)malloc(sizeof(linkNode));//森林的单链表包含一个头结点,头结点符号‘$'forest->tree = (BiTNode*)malloc(sizeof(BiTNode));forest->tree->data = '$';forest->next = NULL;createForest(forest);char ch1;scanf("%c", &ch1);linkNode* p = forest->next;while (p != NULL){if (p->tree->data == ch1){printf("%c:%d\n", p->tree->data, p->tree->weight);}p = p->next;}}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"C++ 统计一个字符串当每个字符出现的权重。":http://eshow365.cn/6-33006-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!