我不是忘尘 2017-10-21 05:54 采纳率: 0%
浏览 468

使用单链表实现截取子串,输出原字符串时第一个字符没有输出是怎么回事?求 解答

 #include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    char ch;            //字符域
    struct node *next;  //指针域,存放下一个结点的地址
}*linkstr;
int length; 
linkstr NullString()
{   
    linkstr s;
    s=(linkstr)malloc(sizeof(node));
    if(s!=NULL)
        s->next=NULL;
    return s;
}
linkstr Push()
{   
    linkstr head;
    linkstr p1,p2;
    length=0;
    p1=p2=(linkstr)malloc(sizeof(node));
    printf("输入串:"); 
    scanf("%c",&p1->ch);
    head=NULL;
    while(p1->ch!='\n')
    {
       length++;
       if(length==1) head=p1;
       else p2->next=p1;
       p2=p1;
       p1=(linkstr)malloc(sizeof(node));
       scanf("%c",&p1->ch); 
    }
    p2->next=NULL;
    return(head);
}
int substr(linkstr s,int i,int len,linkstr t)
{
    linkstr p,q,r,u;
    if(i<=0 || i>length|| i+len-1>length )
        return 0;
    int j,k;
    for(j=0,p=s;j<i-1;j++)
        p=p->next;
    for(k=0,r=t,q=t->next;k<len;k++)
    {
        if(q!=NULL)
        {
            q->ch=p->ch;
            r=q;
            q=q->next;
        }
        else
        {
            u=(linkstr)malloc(sizeof(node));
            u->ch=p->ch;
            r->next=u;
            r=u;
        }
        p=p->next;
    }
    while(q!=NULL)
    {   
        p=q->next;
        free(q);
        q=p;
    }
    r->next=NULL;
    return 1;
}
void print(linkstr s)
{
     linkstr p=s->next;
     while(p!=NULL)
     {
        printf("%c",p->ch);
        p=p->next;
     }
     printf("\n");
}
int main()
{
    linkstr s1,s2;
    s2=NullString();
    int m,n;
    s1=Push();
    printf("截取子串:");
    scanf("%d%d",&m,&n);
    substr(s1,m,n,s2);
    print(s1);
    print(s2);
    return 0;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 电脑误删了手机的照片怎么恢复?
    • ¥15 (标签-python|关键词-char)
    • ¥15 python+selenium,在新增时弹出了一个输入框
    • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
    • ¥20 学生成绩管理系统设计
    • ¥15 来一个cc穿盾脚本开发者
    • ¥15 CST2023安装报错
    • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
    • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
    • ¥20 firefly-rk3399上启动卡住了