unxglwy 2016-11-01 08:29 采纳率: 100%
浏览 1285
已采纳

求助 ,关于两个链表连接的问题

代码如下,为何输出的总是第一个链表中的元素?
#include
#include
//#define NULL 0
typedef struct node
{
char ch;
struct node *next;
}STRNODE;
void str_input(STRNODE *s) //串的输入函数/
{
char ch;
STRNODE *p,*q;
p=s;
q=s->next;
s->ch=0;
while((ch=getchar())!='\n') //通过循环,从键盘输入一串字符串
{
q=(STRNODE *)malloc(sizeof(STRNODE));
q->ch=ch;
q->next=NULL;
p->next=q;
p=q;
s->ch++;
}
}
STRNODE *str_con(STRNODE *s1,STRNODE *s2)
//将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中/
{
STRNODE *p;
p=s1;
while(p->next!=NULL)
{
p=p->next;
}
p->next=s2;
return s1;
}
void str_print(STRNODE *s)
{//字符串输出显示
int i;
STRNODE *p;
p=s->next;
for(i=0;ich;i++)
{
putchar(p->ch);
p=p->next;
}
printf("\n");
}
int main()
{
STRNODE str1,str2;
printf("请输入第一串字符:");
fflush(stdin);
str_input(&str1);
printf("请输入第二串字符串:");
fflush(stdin);
str_input(&str2);
str_con(&str1,&str2);
printf("两串字符连接后的结果为:");
str_print(&str1);
}
图片说明

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-11-01 08:55
    关注

    两个问题:
    1.str_con函数内p->next = s2;应该是p->next = s2->next;
    2.str_con函数内少了一句s1->ch += s2->ch;

     #include<stdio.h>
    #include<stdlib.h>
    //#define NULL 0
    typedef struct node
    {
        char ch;
        struct node *next;
    }STRNODE;
    void str_input(STRNODE *s)          //串的输入函数/
    {
        char ch;
        STRNODE *p, *q;
        p = s;
        q = s->next;
        s->ch = 0;
        while ((ch = getchar()) != '\n')         //通过循环,从键盘输入一串字符串
        {
            q = (STRNODE *)malloc(sizeof(STRNODE));
            q->ch = ch;
            q->next = NULL;
            p->next = q;
            p = q;
            s->ch++;
        }
    }
    STRNODE *str_con(STRNODE *s1, STRNODE *s2)
    //将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中/
    {
        STRNODE *p;
        p = s1;
        while (p->next != NULL)
        {
            p = p->next;
        }
        p->next = s2->next;
        s1->ch += s2->ch;
        return s1;
    }
    void str_print(STRNODE *s)
    {//字符串输出显示
        int i;
        STRNODE *p;
        p = s->next;
        for (i = 0; i<s->ch; i++)
        {
            putchar(p->ch);
            p = p->next;
        }
        printf("\n");
    }
    int main()
    {
        STRNODE str1, str2;
        printf("请输入第一串字符:");
        fflush(stdin);
        str_input(&str1);
        printf("请输入第二串字符串:");
        fflush(stdin);
        str_input(&str2);
        str_con(&str1, &str2);
        printf("两串字符连接后的结果为:");
        str_print(&str1);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP