#include
#include
#include
typedef struct LinkNode
{
char word[25];
struct LinkNodenext;
int count;
}LinkNode;
LinkNodecreate()
{
LinkNodehead = (LinkNode)malloc(sizeof(LinkNode));
head->next = NULL;
return head;
}
LinkNode wordCheck(LinkNode head, char word[])
{
LinkNode p;
if(head==NULL)
return NULL;
p=head->next;
while(p!=NULL)
{
if(strcmp(p->word, word)==0)
return p;
else
p=p->next;
}
return NULL;
}
void Insert(LinkNodehead, charb)
{
LinkNodenewNode = (LinkNode*)malloc(sizeof(LinkNode));
while (head->next != NULL)
head = head->next;
head->next = newNode;
strcpy(newNode->word, b);
newNode->count = 1;
newNode->next = NULL;
}
LinkNodecreateList()
{
int n;
char word[25];
LinkNodep1, wordcheck;
printf("请输入单词的个数\n");
scanf("%d", &n);
LinkNodehead = create();
p1 = head;
printf("请输入单词,以空格作为分隔符\n");
while (n)
{
scanf("%s", word);
wordcheck = wordCheck(head, word);
if (wordcheck == NULL)
Insert(head, word);
else
wordcheck->count++;
n--;
}
return head;
}
void sort(LinkNode *head)
{
LinkNode *p1;
LinkNode *p2;
LinkNode *maxCount;
if(head==NULL)
return;
for(p1=head->next; p1->next!=NULL; p1=p1->next)
{
maxCount=p1;
for(p2=p1->next; p2!=NULL; p2=p2->next)
{
if(p2->count>maxCount->count)
maxCount=p2;
}
}
}
void input(LinkNode *head, int k)
{
LinkNode *p;
if(head==NULL)
return;
p=head->next;
printf("出现次数最多的%d个单词为:\n", k);
while(k!=0&&p!=NULL)
{
printf("%s出现了(%d次)\n", p->word, p->count);
p=p->next;
k--;
}
}
int main()
{
int k;
LinkNode *head;
head =createList();
sort(head);
printf("请输入要输出的单词数:");
scanf("%d", &k);
input(head, k);
return 0;
}
怎么个伪法
类似如下图的,伪代码是介于编程语言与自然语言之间的,用于描述模块结构图的语言。
可以参考如下图类似方式,写伪代码就可以了。