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

线性表有关问题

2012-04-01 
线性表问题#include stdio.h#include stdlib.h//以下为函数运行结果状态代码#define TRUE 1#define FA

线性表问题
#include <stdio.h> 
#include <stdlib.h>

//以下为函数运行结果状态代码 

#define TRUE 1
#define FALSE 0
#define OK 1 
#define ERROR 0 
#define INFEASIBLE -1 
#define OVERFLOW -2 

#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量 
#define LISTINCREMENT 1 //线性表存储空间分配增量 

typedef int Status; //函数类型,其值为为函数结果状态代码 

typedef int ElemType; //假设数据元素为整型 

typedef struct 

  ElemType *elem; //存储空间基址 
  int length; //当前长度 
  int listsize; //当前分配的存储容量 
}Sqlist; 
//实现线性表的顺序存储结构的类型定义

static Sqlist L;//为了引用方便,定义为全局变量
static ElemType element;

///////////////////////////////////////
//函数名:InitList()
//参数:SqList L
//初始条件:无
//功能:构造一个空线性表
//返回值:存储分配失败:OVERFLOW
// 存储分配成功:OK
///////////////////////////////////////
Status InitList(Sqlist L)
{
  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));为什么这个地方根本就没有分配内存呢?我后面取L.listsize值的时候都是为0!求解!!!
printf("成功");
  if(L.elem==NULL)
exit(OVERFLOW);
  else
  {
  L.length=0;
  L.listsize=LISTINCREMENT;
  return OK;
  }
}
void main()
{
int i=0;int *p;
Status InitList(Sqlist L);
L.elem=&i;p=L.elem;
printf("输出:%d ",L.listsize);
for(i=0;i<L.listsize;i++)
{
  L.elem=L.elem+1;
  (L.elem)=&i;
  printf("b");
}
printf("aaaaaaa");
for(i=0;i<L.listsize;i++)
{
printf("%d ",*(p));
}
}

[解决办法]

C/C++ code
Status InitList(Sqlist L){  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));  if(L.elem==NULL)  {    printf("失败");//加个打印看看    exit(OVERFLOW);  }  else  {    printf("成功");    L.length=0;    L.listsize=LISTINCREMENT;    return OK;  }}
[解决办法]
C/C++ code
#include <stdlib.h>#include "stdio.h"//以下为函数运行结果状态代码  #define TRUE 1#define FALSE 0#define OK 1  #define ERROR 0  #define INFEASIBLE -1  #define OVERFLOW -2  #define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量  #define LISTINCREMENT 1 //线性表存储空间分配增量  typedef int Status; //函数类型,其值为为函数结果状态代码  typedef int ElemType; //假设数据元素为整型  typedef struct  {    ElemType *elem; //存储空间基址    int length; //当前长度    int listsize; //当前分配的存储容量  }Sqlist;  //实现线性表的顺序存储结构的类型定义static Sqlist L;//为了引用方便,定义为全局变量static ElemType element;/////////////////////////////////////////函数名:InitList()//参数:SqList L//初始条件:无//功能:构造一个空线性表//返回值:存储分配失败:OVERFLOW// 存储分配成功:OK///////////////////////////////////////Status InitList(Sqlist &L)//应该是地址传递 {  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//为什么这个地方根本就没有分配内存呢?我后面取L.listsize值的时候都是为0!求解!!!  if(L.elem==NULL)    {         printf("mallco error\n");        exit(OVERFLOW);     }   else  {          printf("成功");          L.length=0;        L.listsize=LIST_INIT_SIZE;//此处不是增量           return OK;  }}int main(){int i=0;int *p;/** Status InitList(Sqlist L);//函数调用不是这样子得啊**/InitList(L); L.elem=&i;p=L.elem;printf("输出:%d ",L.listsize);for(i=0;i<L.listsize;i++){  L.elem=L.elem+1;  (L.elem)=&i;  printf("b");}printf("aaaaaaa");for(i=0;i<L.listsize;i++){printf("%d ",*(p));}} 

热点排行