新手求助!!

t9fddv8 2009-09-09 10:54:52
#include <stdio.h>
#include <stdlib.h>


typedef struct sqlist
{
int *num;
int length;
int listsize;
}Sqlist;

int InitStu_Sq(Sqlist &L)
{

L.num=(int *)malloc(sizeof(int));
if(!L.num)exit(0);
L.num[0]=3;
L.num[1]=0;
L.num[2]=2;
L.length=3;
L.listsize=100;
return 0;
}
int ListInsert_Sq(Sqlist &stu,int i,int e)
{
int *q,*p;
if(i<1||i>stu.length+1)return(0);
if (stu.length>=stu.listsize)
{
stu.num=(int *)realloc(stu.num,(100+10)*sizeof(int));
if(!stu.num)exit(0);
}
stu.listsize=stu.listsize+10;
q=&(stu.num[i-1]);
for(p=&(stu.num[stu.length-1]);p>=q;--p)
*(p+1)=*p;
stu.num[i-1]=e;
++stu.length;
return 1;
}

void main()
{
Sqlist stu;
int i;
InitStu_Sq(stu);
printf("%d\n",&stu.num[1]);
ListInsert_Sq(stu,1,3);
printf("%d\n",&stu.num[1]);

}



这是本人刚写的程序。。。但是为什么输出是3674140呢?烦劳各位大哥指点一下。。。

还有问个问题,对于线性表的插入功能,如果我要插入的是一个定义的结构体怎么写插入的函数呢?

按书上的范例好像不行啊!
...全文
53 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenzheng38 2009-09-10
  • 打赏
  • 举报
回复
int ListInsert_Sq(Sqlist &stu,int i,int e)
{
int *q,*p;
if(i <1||i>stu.length+1)return(0);
if (stu.length>=stu.listsize)
{
stu.num=(int *)realloc(stu.num,(100+10)*sizeof(int));
if(!stu.num)exit(0);
stu.listsize=stu.listsize+10; //应该在这里
}
q=&(stu.num[i-1]);
for(p=&(stu.num[stu.length-1]);p>q;--p) //应该p>q
*(p+1)=*p;
stu.num[i-1]=e;
++stu.length;
return 1;
}
如果插入的是个结构体的话,就再定义个结构体就可以呀
struct node{
int element;
struct node * next;
} *node;
或者是
typedef struct sqlist
{
struct node {
int key;
int value
}*node;
int length;
int listsize;
}Sqlist;

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧