我不是忘尘 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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 求数学坐标画圆以及直线的算法
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 自己瞎改改,结果现在又运行不了了
    • ¥15 链式存储应该如何解决
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站