你碍我了^ 2022-12-15 12:26 采纳率: 60%
浏览 33
已结题

关于#c语言#单链表的问题,请各位专家解答!

```#include <stdio.h>
#include <malloc.h>

typedef int ElemType;
typedef struct LNode
{
ElemType data;
void *next;
}LinkNode;
void InitList(LinkNode **L){
(L)=(LinkNode) malloc(sizeof(LinkNode));
(*L)->next=NULL;
}
void CreateListF(LinkNode **L, ElemType a[], int n)
{ LinkNode *s;//printf("%d\n",L);printf("%d\t%d\n",L->data,L->next);
//(L)=(LinkNode)malloc(sizeof(LinkNode));
//(*L)->next=NULL;
for(int i=0;i<=n;i++){
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
s->next=(*L)->next;
(*L)->next=s;
}
}
void CreateListT(LinkNode **L, ElemType a[], int n){
LinkNode *s, *r;

}
void DispList(LinkNode **L){
LinkNode *p=(*L)->next;
//printf("%p %p %p %d ",p->next,(*L)->next,p,p->data);
while(p!=NULL){
//p=p->next;
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int main(){
LinkNode *L=NULL;
//printf("l1=%d\n",L->next);
//printf("l8=%d\n",&L);
ElemType a[4]={4,3,2,1};
InitList(&L);
CreateListF(&L,a,4);
DispList(&L);
}```

img

为什么会多输出一个地址

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-12-15 12:49
    关注

    改动处见注释,供参考:

    #include <stdio.h>
    #include <malloc.h>
    typedef int ElemType;
    typedef struct LNode
    {
        ElemType data;
        struct LNode* next;        //void* next; 修改
    }LinkNode;
    void InitList(LinkNode** L) {
        (*L) = (LinkNode*)malloc(sizeof(LinkNode));
        (*L)->next = NULL;
    }
    void CreateListF(LinkNode** L, ElemType a[], int n)
    {
        LinkNode* s;//printf("%d\n",L);printf("%d\t%d\n",L->data,L->next);
     //(L)=(LinkNode)malloc(sizeof(LinkNode));
     //(*L)->next=NULL;
        for (int i = 0; i < n; i++) { //for (int i = 0; i <= n; i++) 修改
            s = (LinkNode*)malloc(sizeof(LinkNode));
            s->data = a[i];
            s->next = (*L)->next;
            (*L)->next = s;
        }
    }
    void CreateListT(LinkNode** L, ElemType a[], int n) {
        LinkNode* s, * r;
    }
    void DispList(LinkNode* L) {       //void DispList(LinkNode** L) 修改
        LinkNode* p = L->next;
        //printf("%p %p %p %d ",p->next,(*L)->next,p,p->data);
        while (p != NULL) {
            //p=p->next;
            printf("%d\t", p->data);
            p = p->next;
        }
        printf("\n");
    }
    int main() {
        LinkNode* L = NULL;
        //printf("l1=%d\n",L->next);
        //printf("l8=%d\n",&L);
        ElemType a[4] = { 4,3,2,1 };
        InitList(&L);
        CreateListF(&L, a, 4);
        DispList(L);            //DispList(&L); 修改
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?