changkong96 2021-05-16 00:23 采纳率: 80%
浏览 32
已采纳

任意输入几个字符,按了回车键后,系统只是光标换行,没有输出任何东西。

编写程序,从键盘输入一行字符,且每个字符存入一个结点,调用函数输入顺序建立一个链表,然后输出并释放全部结点#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct List{
     char ch;
     List *next;
};
struct List *creat()
{
    List *head,*p1,*p2;
    char n;
    int i=0;
    head=NULL;
    printf("输入字符串:\n");
    n=getchar();
    while(n!='\n');
    {
        p1=(List *)malloc(sizeof(List));
        p1->ch=n;
        if(i==0)
        {
            i++;
            head=p1;
        }
        else 
            p2->next=p1;
        p2=p1;
            n=getchar();
    }
    p2->next=NULL;
    printf("字符串已完全存入链表\n");
    return (head);
}
int main()
{
    List *head,*p1,*p2;
    char n;
    head=creat();
    printf("输入的字符串为:\n");
    n=getchar();
    free(p1);
    return 0;
}
 

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-05-16 01:11
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    struct List{
         char ch;
         List *next;
    };
    
    struct List *creat()
    {
        List *head,*p1,*p2;
        char n;
        int i=0;
        head=NULL;
        printf("输入字符串:\n");
                                       //n=getchar();
        while((n=getchar()) && n!='\n')//;
        {
            p1=(List *)malloc(sizeof(List));
            p1->ch=n;
            if(i==0)
            {
                i++;
                head=p1;
            }
            else
                p2->next=p1;
            p2=p1;
                                      //n=getchar();
        }
        p2->next=NULL;
        printf("字符串已完全存入链表\n");
        return (head);
    }
    
    void print(struct List *head)//输出链表
    {
         struct List *p;
         if(head==NULL) return;
         p = head;
         while(p){
               printf("%c ",p->ch);
               p = p->next;
         }
         printf("\n");
    }
    
    void del(struct List *&head)//释放链表结点
    {
        if(head != NULL){
           del(head->next);
           free(head);
        }
        head = NULL;
    }
    
    int main()
    {
        List *head;          //*p1,*p2;
                             //char n;
        head=creat();
        printf("输入的字符串为:\n");
        print(head);
                            //n=getchar();
                            //free(p1);
        printf("释放全部结点:\n");
        del(head);
        print(head);
        
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试