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无用
悬赏问题
- ¥20 测距传感器数据手册i2c
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法