海滩超人 2019-12-02 12:20 采纳率: 0%
浏览 308
已采纳

请问为什么我写的C语言中顺序存储的线性表的输出有这个错误

调试环境VC6.0

#include<stdlib.h>
#include<stdio.h>

typedef int Status;       // Status 是函数返回值类型,其值是函数结果状态代码。
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define List_Init_Size 100 //线性表存储空间初始分配量
#define Listincerment 10  //线性表存储空间的分配增量
typedef struct SqList
{
  int *elem;
  int length;
  int listsize;  //当前分配的存储容量()
}SqList;

Status InitList_Sq(SqList*L)
{//初始化顺序线性表//
 L->elem=(int*)malloc(List_Init_Size*sizeof(int));
 if(!L->elem)exit(OVERFLOW);    //存储分配失败
 L->length=0;
 return OK;
}


Status ListInsert_Sq(SqList *L, int i, int e)
{
 //i位置之前插入新元素e
 if(i<1||i>L->length+1)return ERROR;
 if((L->length)>=(L->listsize)){
  //当前存储空间已满,增加分配
    int*newbase,*q,*p;
       newbase=(int*)realloc(L->elem,(L->listsize+Listincerment)*sizeof(int));
    if(!newbase)exit(OVERFLOW);//存储分配失败}

    L->elem=newbase;                         //新的基址
    L->listsize+=Listincerment;            //增加容器容量
   q=&(L->elem[i-1]);                //q为插入位置
   for(p=&(L->elem[L->length-1]);p>=q;--p)
   *(p+1)=*p;  //插入位置及以后的元素后移
   *q=e;   //插入e
   ++L->length;
 }
return OK;}

void output(SqList L)
{
 int i;
 for(i=0;i<L.length;i++)
 {

  printf("%d ",&L.elem[i]);
 }
}

void main()
{
  SqList a;
  int i,j;
 InitList_Sq(&a);
 printf("输入要写入链表a中元素的个数");
 scanf("%d",&j);
 printf("输入每个元素");
 for(i=1;i<=j;i++)                        //小于等于
 {
  int e;
  scanf("%d",&e);
  ListInsert_Sq(&a,i,e);
 }
 output(a);
}

图片说明

  • 写回答

1条回答 默认 最新

  • 速趴赛亚金 2019-12-02 14:18
    关注

    output函数中的&符号去掉,你那打印的是地址,不是值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题