Souka2 发表于 2022-9-19 22:27:45

单链表问题 报错求助

针对带头结点的单链表,试编写下列函数:

(a)定位函数:在单链表中寻找给定值的结点。若找到,则返回该结点的地址(返回等于给定值的第一个结点的位序即可,并非实际地址),否则返回空。

(b)统计函数:统计单链表中等于给定值e的元素个数。

在主函数当中按照以下步骤进行测试

         输入链表结点个数->输入数值->输出链表->定位某个元素->输入数值e->统计链表中值为e的结点个数


【输入形式】

6   // 初始结点个数

4 2 1 6 2 5//输入6个数值

7   //定位元素7

2 // 统计元素值为2的结点个数


【输出形式】

4 2 1 6 2 5

error

2

代码如下,不清楚为什么报错
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int date;
    struct LNode *next;

} LinkNode;

void CreatListF(LinkNode *L)
{
    int n;
    int m;
    LinkNode *s;
    L = (LinkNode *)malloc(sizeof(LinkNode));
    L->next = NULL;
    scanf("%d", &n);
    int a;
    for(int j=0;j<n;j++){
      scanf("%d",&m);
      a=m;
    }
    for (int i = 0; i < n; i++)
    {
      s = (LinkNode *)malloc(sizeof(LinkNode));
      s->date = a;
      s->next = L->next;
      L->next = s;
    }
}                                          
void DispList(LinkNode *L){
    LinkNode *s=L->next;
    while (s!=NULL)
    {
      printf("%d ",s->date);                // 此处报错,不清楚为什么,具体应该怎么改呀,求求了,错误提示只说出现异常
      s=s->next;

    }
    printf("\n");
}

int LocateElem(LinkNode *L){
    int i=1;
    int e;
    scanf("%d",&e);
    LinkNode *p=L->next;
    while (p!=NULL&&p->date!=e)
    {
      p=p->next;
      i++;
    }
    if(p==NULL){
      printf("error");
    }
    else {
      return(i);
    }
}
int Count(LinkNode *L)
{
        int cnt = 0;
    int e;
    scanf("%d",&e);
    LinkNode *p=L->next;
    while (p)
    {
      if(p->date==e)
            cnt++;
      p=p->next;
    }
    printf("%d", cnt);
    return cnt;
   
   
}
int main(){
    LinkNode L;
    CreatListF(&L);
    DispList(&L);
    LocateElem(&L);
    Count(&L);

}

ba21 发表于 2022-9-19 23:08:40


#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int date;
    struct LNode *next;

} LinkNode;


void CreatListF(LinkNode *L)
{

    LinkNode *s, *tmp;

    L->date = 7;
    L->next = NULL;
    tmp = L;

    int n;
    scanf("%d", &n);
    int a;
    for(int i=0; i<n; i++){
      scanf("%d",&a);
    }
    for (int i = 0; i < n; i++)
    {
      s = (LinkNode *)malloc(sizeof(LinkNode));
      s->date = a;
      s->next = NULL;
      tmp->next = s;
      tmp = s;
    }

}
void DispList(LinkNode *L){
    LinkNode *tmp=L;
    while (tmp!=NULL)
    {
      printf("%d ",tmp->date);               
      tmp=tmp->next;

    }
    printf("\n");
}

int main(){
    LinkNode L;
    CreatListF(&L);
    DispList(&L);
   // LocateElem(&L);
    //Count(&L);

}

页: [1]
查看完整版本: 单链表问题 报错求助