首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解一个关于线性表的有关问题

2012-03-12 
求解一个关于线性表的问题这是我写的一个线性表的简单操作:#includestdio.h#includestdlib.h#define L

求解一个关于线性表的问题
这是我写的一个线性表的简单操作:

#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.用二级指针做参数
[解决办法]
参数换成引用或者指针

热点排行