C语言算法(代码):假设文件中有许多单词,将单词从文件中读出,放到链表中,按字母升序实现

#include <stdio.h>
#include <stdlib.h>

struct node
{ char *data;       /*接点的数据域为指针,或理解为字符数组*/
  struct node *next;
}*head,*p,*q;

int main()  /*假设文件中有许多单词,将单词从文件中读出,放到链表中,按字母升序实现*/
{ int i;
  char ch;
  FILE *fp;

 if(!(fp=fopen("filename","r")))    /*以只读方式打开文件  */
 { printf("cannot open the file!");
  return 0;
 }

 head=(node *)malloc(sizeof(struct node));  /*构建单向链表的头结点 */
 head->data[0]='a';  /*把头结点的第一个单元强行赋值为a  */

 while((ch=fgetc(fp))!=EOF)/*读一个字符并判断文件是否 结束*/
  {
   while(ch==' '){ch=fgetc(fp);}      /*排除连续的多个空格   */
   if(ch<'z'){ch+=0x20;}          /*如果是大写字母,则改为小写字母   */

   i=0;
   q=(node *)malloc(sizeof(struct node)); /*申请一个结点用来存放新单词 */
   while(ch=fgetc(fp)!=' ')   /*把非空格字符放入q结点*/
   {
      q->data[i]=ch;    /*把新读取的新字符存入新结点数据域(字符数组)的第i个单元   */
      i++;
   }
  
     for(p=head;q->data>p->next->data;p=p->next);   /*把新结点插入排序  */
       q->next=p->next;
       p->next=q;
      
  } fclose(fp);  /*关闭文件*/ 

    p=head->next;
    for (;!p->next ;p=p->next) {printf(p->data);}/*打印结果*/
    free(head);   /*释放头结点*/
    return 1;
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值