线性表的应用
实验目的:掌握线性表的基本结构和操作方法,培养学生灵活使用表解决实际问题的能力。
实验内容: 键盘输入英语单词的个数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 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
- ¥30 itest不允许查看成绩怎么办
- ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
- ¥20 C,有个译码器,换了信道就跑不出原来数据
- ¥15 MIMIC数据库安装问题
- ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
- ¥20 全书网Java爬取数据
- ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
- ¥100 微信小程序跑脚本授权的问题
- ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏