编写程序,从键盘输入一行字符,且每个字符存入一个结点,调用函数输入顺序建立一个链表,然后输出并释放全部结点#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;
}
任意输入几个字符,按了回车键后,系统只是光标换行,没有输出任何东西。
- 写回答
- 好问题 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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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#的问题:自动化测试