2条回答 默认 最新
- CSDN专家-link 2021-06-09 02:06关注
第一是逐行读取文件,根据空格拆分单词
第二是链表检索单词,找到则该节点的计数器加一,找不到则加新节点
第三是节点有序插入,比较节点单词大小插入合适位置
第四是节点数据结构,串记录单词,整型为计数器,创建新节点时计数器为1
#include <string> #include <iostream> #include <stdio.h> #include <fstream> using namespace std; typedef struct _NODE { string word; int count; _NODE *next; }NODE,*PNODE; PNODE head = NULL; PNODE searchString(string word) { PNODE p = head; while(p != NULL) { if(p->word == word) return p; p = p->next; } return NULL; } PNODE addNode(string word) { PNODE p = searchString(word); if(p != NULL) p->count++; else { p = new NODE; p->word = word; p->count = 1; p->next = NULL; // if(head == NULL || word < head->word) { p->next = head; head = p; return head; } else { PNODE q = head; PNODE prev = q; while(q != NULL) { if(word < q->word) { p->next = q; prev->next = p; break; } prev = q; q = q->next; } if(q == NULL) prev->next = p; } } return head; } void print() { PNODE p = head; while(p != NULL) { cout<<p->word<<" "<<p->count<<endl; p = p->next; } } void main() { ifstream file("D:\\textfile.txt"); if(!file.is_open()) { cout<<"can't open this file"<<endl; return; } char buf[1024]; while(!file.eof()) { file.getline(buf,1024); char *p= strtok (buf, " ,!." ); while(p != NULL) { head = addNode(p); p= strtok (NULL, " ,!." ); } } file.close(); // print(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大