作业帮 > 综合 > 作业

C语言问题,从键盘输入n个英语单词.输入格式为n,w1,w2,w3…wn,其中n表示随后输入的英语

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 22:55:09
C语言问题,从键盘输入n个英语单词.输入格式为n,w1,w2,w3…wn,其中n表示随后输入的英语
单词个数,将输入的单词以单链表形式储存,如果单词重复出现,则在链表上只保留一个,并统计单词出现的次数.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct Link
{
        int num;
        char *p;
        struct Link *next;
}Link;

void  Insert(Link *head,char *str)
{
        while(head->next!=NULL)
        {
                head = head ->next;
                if(strcmp(str,head->p)==0) { head->num++; return ;}
        }
        Link *tmp = (Link*)malloc(sizeof(Link));
        tmp->p = (char *) malloc(sizeof(str));
        strcpy(tmp->p,str);
        tmp->num=1;
        tmp->next=NULL;
        head->next=tmp;
//      return node;
}

void print(Link *head)
{
        Link *node = head->next;
        while(node!=NULL)
        {
                printf("%s:%d\n",node->p,node->num);
                node=node ->next;
        }
}
int main()
{
        int n;
        Link *head=(Link*)malloc(sizeof(Link*));
        scanf("%d",&n);
        while(n--)
        {
                char tmp[100];
                scanf("%s",tmp);
                Insert(head,tmp);
        }
        print(head);
        return 0;
}