YIKOUCUSO4 2021-06-08 23:15 采纳率: 50%
浏览 54
已采纳

c++链表统计英文文本。求代码,谢谢!

  • 写回答

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值优化,参数优化算法