线性表的应用
实验目的:掌握线性表的基本结构和操作方法,培养学生灵活使用表解决实际问题的能力。
实验内容: 键盘输入英语单词的个数n及n个单词,编写程序,建立一个单向链表,实现: (1)如果单词重复出现,则只在链表上保留一个。
(2)除满足(1)的要求外。链表结点还应有一个计数域,记录该单词重复出现的次数,然后输出出现次数最多的前k(k<=n,需键盘输入)个单词。
注:次数并列的情况考虑、不考虑均可。提示:本题链表结点的数据域存放英文单词,可用字符数组表示,单词重复出现时,链表中只保留一个,单词是否相等的判断使用strcmp函数,结点中增设计数域,统计单词重复出现的次数。
数据结构的第一次任务 以下是全部要求
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 快乐鹦鹉 2022-10-08 04:18关注
是否要求哨兵节点?
#include <stdio.h> #include <string.h> typedef struct _Node { char word[30]; int count; struct _Node * next; }Node; void AddNode(Node *head,char *word) { Node *p = head; while(p->next != NULL) { if(strcmp(p->next->word,word) == 0) { p->next->count++; return; } p = p->next; } Node *q = (Node*)malloc(sizeof(Node)); q->next= NULL; p->next= q; q->count = 1; strcpy(q->word,word); } int main() { Node head; head.next = NULL; head.count = 0; // int n; printf("输入单词数量:"); scanf("%d",&n); char word[30] = {0}; for(int i=0;i<n;i++) { scanf("%s",word); AddNode(&head,word); } Node *p = head.next; Node *q = p; while(p != NULL) { if(p->count > q->count) q = p; p = p->next; } printf("出现次数最多单词为:%s\n",q->word); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化