太过平凡的小蚂蚁 2015-03-22 13:20 采纳率: 26.9%
浏览 2860

顺序表 结构体 求指教

#include
#include
#include
#define MAXSIZE 100
typedef struct{
char *name;
char *Num;
}DataType;
DataType re1,re2,re3;
typedef struct{
DataType *data;
int length;
}SeqList;
//初始化

void InitList(SeqList *L)
{

L->data=(DataType*)malloc(sizeof(DataType)*MAXSIZE);
L->length=0;
}
//插入
void InsertList(SeqList *L,DataType e,int i)
{
int j;
if(iL->length+1)
printf("位置错误\n");
if(L->length>=MAXSIZE)
printf("表空间会溢出\n");
//正式插入元素,如果i<=j是真正的插入,所以需要挪动后面的元素给其空出位置
for(j=L->length;i<=j;j--)
L->data[j+1]=L->data[j];
L->data[i]=e;
L->length++;

}
void Output(SeqList *L)
{
int i;
for(i=1;i<=L->length;i++)
printf("%s\t%s\n",L->data[i].name,L->data[i].Num);
printf("\n");
}
void main()
{
SeqList La;//定义L为这种类型表,即数据类型是结构体类型的,并拥有长度。
InitList(&La); //初始化这个顺序表,即动态分配内存并给这个表的长度初始为0

//对结构体变量进行赋值

 re1.name="donghe";      re1.Num="15202248150";
 re2.name="songxuekai";  re2.Num="15138412255";
 re3.name="limingrui";   re3.Num="13549367791";

//对表元素进行赋值
InsertList(&La,re1,1);
InsertList(&La,re2,2);
InsertList(&La,re3,3);
Output(&La);
}

上面的顺序表是没改之前的,我把定义结构体类型时的char *Num;改为 int Num;
然后在下面对结构体变量赋值时 re1.Num="15202248150";改为re1.Num=15202248150,其他两个改为是这样。
结果就出现了错误,不知道哪里的问题,请指教!

  • 写回答

1条回答 默认 最新

  • 恒宝乐园 2015-03-25 00:40
    关注

    同志,你似乎是超出了int范围赋值导致了错误。(仅谬见,望对您有帮助)
    对于本人来说,更喜欢你原来的写法。
    ps:顺序表的其它函数呢?感觉你写的代码还是不错的,起码思路很清晰,而且注释加的也很恰当。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?