qq_31750507 2015-11-05 15:37 采纳率: 52.6%
浏览 1595

@C语言大神,按序号i查找链表中的元素,第46行为啥有断点错误~~???求解释

include

include

typedef struct Node
{
char data;
struct Node *next;
}Node,*Linklist;

Linklist Createfromhead()//建立链表
{
Linklist L;Node*s;int flag=1;char c;
L=(Linklist)malloc(sizeof(Node));
L->next=NULL;

while(flag)
{
 c=getchar();
 if(c!='$')
 {
    s=(Node*)malloc(sizeof(Node));
    s->data=c;
    s->next=L->next;
    L->next=s;
 }
 else
 flag=0;
}


do{
    printf("%c,\n",L->data);
    L=L->next ;
}while(L!=NULL);


return L;

}

Node* search(int k)//按照序号i查找元素
{
Node*p;int j=0;Linklist L;
p=L;
j++;
p=p->next;//先来一步,使得(p->next)!=NULL

while((j<k)&&((p->next)!=NULL))
{
    j++;
    p=p->next;
}

if(j==k) {printf("%c\n",p->data);return p;} 
 else    {printf("NO\n");return NULL;}

}

int main()
{

int i;
Createfromhead();
printf("input the order i:\n");
scanf("%d",&i);
search(i);
getch();

}


 scanf("%d",&i);
search(i);
getch();    

}


 scanf("%d",&i);
search(i);
getch();    

}

  • 写回答

1条回答 默认 最新

  • yangbo50304 2015-11-06 01:52
    关注

    你的L这个变量在Createfromhead方法中就已经指向了最后一个元素的next,已经为NULL了,还有就是search需要传入你的链表的头指针。
    参考下面的代码吧

     typedef struct Node
    {
        char data;
        struct Node *next;
    }Node,*Linklist;
    
    Linklist Createfromhead()//建立链表 
    {
        Linklist L;Node*s;int flag=1;char c;
        L=(Linklist)malloc(sizeof(Node));
        L->next=NULL;
        while(flag)
        {
            c=getchar();
            if(c!='$')
            {
                s=(Node*)malloc(sizeof(Node));
                s->data=c;
                s->next=L->next;
                L->next=s;
            }
            else
                flag=0;
        }
    
        Linklist p = L;
        do
        {
            printf("%c,\n",L->data);
            L=L->next ;
        }while(L!=NULL);
    
    
        return p;
    }
    
    Node* search(int k, Linklist L)//按照序号i查找元素 
    {
        Node*p;int j=0;
        p=L;
        j++;
        p=p->next;//先来一步,使得(p->next)!=NULL
        while((j<k)&&((p->next)!=NULL))
        {
            j++;
            p=p->next;
        }
    
        if(j==k) {printf("%c\n",p->data);return p;} 
        else    {printf("NO\n");return NULL;}
    }
    
    int main()
    {
        int i;
        Linklist L = Createfromhead();
        printf("input the order i:\n");
        scanf("%d",&i);
        search(i, L);
        getch();
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献