永发信息网

用gets输入任意多个的长度小于80的字符串,结束后重新显示所有输入过的字符串,如何使用链表方式处理.?

答案:1  悬赏:20  手机版
解决时间 2021-04-07 21:31
  • 提问者网友:鼻尖触碰
  • 2021-04-07 11:29
用gets输入任意多个的长度小于80的字符串,结束后重新显示所有输入过的字符串,如何使用链表方式处理.?
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-04-07 11:52
#include 
#include 
#include 

typedef struct  //定义结构体 
{
char ch[80];  //存放数据字符串 
struct node* next;  //指向下一个结点 
}node;

node* Create()   //新建结点并初始化 
{
node* n=(node*)malloc(sizeof(node)*1); //为新结点分配内存空间
memset(n->ch,'',80);
n->next=NULL;
return n;
}

int main()
{
node *head=NULL,*p=NULL;               //定义头结点和当前指向结点指针
char s[80]="";
while(1)
{
memset(s,'',80);
gets(s);
if(strcmp(s,"quit")==0) break;     //如果输入的是quit则表示用户结束输入 
node *new_node;
new_node=Create();                 //新建结点 
strcpy(new_node->ch,s);            //把用户输入的字符串存储入新结点中 
if(head==NULL)                     //如果头结点为空,则把当前新结点当成头结点 
{
head=new_node;
p=head;                        //当前指向为头结点 
}
else                               //如果头结点不为空 
{
p->next=new_node;              //把上一个结点的next指向新建结点 
p=p->next;                     //当前指向为新结点 
}
}
printf("

");
p=head;                                //重新指向头结点,以便输出 
while(1)
{
printf("%s
",p->ch);              //输出数据字符串 
if(p->next==NULL) break;           //如果当前结点没有指向下一个结点,则退出 
p=p->next;                         //当前指向下一个结点 
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯