求解一个关于线性表的问题
这是我写的一个线性表的简单操作:
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
long *elem;
int length;
int listSize;
}List;
bool InitList(List L){
L.elem = (long *)malloc(LIST_INIT_SIZE * sizeof(long));
if(!L.elem){
printf("线性表创建失败!");
return false;
}
L.length = 0;
L.listSize = LIST_INIT_SIZE;
return true;
}
bool ListPosInsert(List L,int pos,int x){
if((pos < 1) || (pos > L.length + 1)){
return false;
}
if(L.length >= L.listSize){
long *newbase = (long *)realloc(L.elem,(L.listSize+LISTINCREMENT)*sizeof(long));
if(!newbase) return false;
L.elem = newbase;
L.listSize += LISTINCREMENT;
}
long *q = &(L.elem[pos -1]);
for(long *p = &(L.elem[L.length - 1]);p >= q;--p){
*(p + 1) = *p;
}
*q = x;
L.length++;
return true;
}
void ListTraverse(List L)
{
for(int i = 0;i < L.length;i++){
printf("%d ",L.elem[i]);
}
}
int _tmain(int argc, _TCHAR* argv[]){
List La = {NULL,0,0};
bool b = InitList(La);
if(b) {printf("YES");}
else {printf("NO");}
ListPosInsert(La,1,11);
ListPosInsert(La,2,22);
ListPosInsert(La,3,33);
ListTraverse(La);
system("pause");
return 0;
}
我想插入三个元素,然后遍历出来,可是运行结果却没有,只输出了一个表示初始化成功的YES。。。
[解决办法]
1.参数用结构体指针,函数结束返回指针
2.用二级指针做参数
[解决办法]
参数换成引用或者指针