计算链接列表中元音和辅音的数量
在这个问题中,我们需要计算给定链接列表中元音和常量的总数。我们可以遍历链接列表并检查每个字符,无论是常量还是元音。
问题陈述− 我们给出了一个包含小写字母字符的链接列表。我们需要计算链接列表中元音和常量的总数。
示例
输入
'a' -> 'b' -> 'e', 'c' -> 'd' -> 'e' -> 'f'' -> 'o' -> 'i' -> 'a' -> 'a'
输出
元音 – 7,常数 - 4
解释 − 包含'b'、'c'、'd'和'f'常数,其他为元音。
输入
a' -> 'e' -> 'i' -> 'o' -> 'u'
输出
元音 – 5,常数 - 0
解释 − 它包含输入字符串中的所有元音。
输入
'c' -> 'g' -> 'h' -> 'f'' -> 'p' -> 'q' -> 'w' -> 'x'
输出
元音 – 0,常量 - 7
说明 − 输入字符串仅包含常量。
方法 1
在此方法中,我们将获取数组中的字符。之后,我们将数组转换为链接列表。接下来,我们遍历链接列表并检查每个字符,无论是元音还是常量。
算法
步骤 1 − 定义'struct'类型的'listNode'以创建链接列表节点。
步骤 2 − 定义 addNode() 函数以将节点插入链接列表。
步骤 2.1 − 在 addNode() 函数中创建一个新节点。此外,使用给定的字符初始化其'ch'值,并使用空值初始化下一个节点。
步骤 2.2 − 如果起始节点为空,则将临时节点分配给起始节点。如果起始节点不为空,则遍历链接列表,找到最后一个节点,最后附加临时节点。
步骤 3 - 定义 isConst() 变量以检查特定字符是常量还是元音。
步骤 4 - 定义 countVowelsAndConst() 函数来计算给定字符串中元音和常量的总数。
步骤 5 - 用零初始化"cons"和"vow"变量,分别存储常量和元音的计数。
步骤 6 - 如果起始节点为空,则打印一条消息,表示列表不包含任何元音或辅音。
步骤 7 - 遍历链接列表,直到到达最后一个节点。获取当前节点的字符,并通过传递该字符作为参数来执行 isConst() 函数。
步骤 8 − 如果 isConst() 函数返回 true,则将"cons"变量的值增加 1。否则,将"vow"的值增加 1。
步骤 9 − 移动到循环中的下一个节点。
步骤 10 − 最后,打印"vow"和"cons"变量的值。
示例
#include <bits/stdc++.h> using namespace std; // 创建 struct listNode struct listNode { int ch; listNode *next; } listNode; // 将节点添加到链接列表 void addNode(struct listNode **start, int ch) { // 创建新节点 struct listNode *temp = new struct listNode(); // 将 ch 添加到节点 temp->ch = ch; temp->next = NULL; // 如果列表为空,则将节点添加到列表 if (*start == NULL) { *start = temp; } else { // 如果列表有一些节点,则将该节点附加到列表的末尾 struct listNode *pointer1 = *start; while (pointer1->next != NULL) { pointer1 = pointer1->next; } pointer1->next = temp; } } bool isConst(char ch) { if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { return false; } return true; } // 计数元音和辅音 void countVowelsAndConst(struct listNode *start) { int vow = 0; int cons = 0; // 如果列表为空 if (start == NULL) { cout << "列表不包含任何元音和常量" << endl; return; } // 遍历链接列表 while (start != NULL) { if (isConst(start->ch)) { cons++; } else { vow++; } start = start->next; } cout << "列表中元音的总数为 " << vow << endl; cout << "列表中辅音的总数为 " << cons << endl; } int main() { int arr[] = {'a', 'b', 'e', 'c', 'd', 'e', 'f', 'o', 'i', 'a', 'a'}; int len, p; // 创建一个空的链接列表 struct listNode *start = NULL; len = sizeof(arr) / sizeof(arr[0]); // 将数组的字符插入到链接列表中 for (p = 0; p < len; p++) addNode(&start, arr[p]); countVowelsAndConst(start); return 0; }
输出
列表中元音的总数为 7 列表中辅音的总数为 4
时间复杂度− O(N),因为我们遍历链接列表。
空间复杂度− O(1),因为计数操作不占用任何空间。
我们计算了给定链接列表中元音和常量的总数。程序员还可以计算给定链接列表中特定字符的频率以进行更多练习。