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

线性表——顺序存储有关问题

2013-07-04 
线性表——顺序存储问题// 2013.6.29//linear list#include stdio.h#define OK 1#define ERROR 0#define T

线性表——顺序存储问题



// 2013.6.29
//linear list

#include "stdio.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXLENGTH 8

// Creat linear list
typedef struct 
{
int data[MAXLENGTH];
int length;
}Sqlist;
//get list elements
//make sure element is not NULL when calling

int getElement(Sqlist *L,int i,int *e)
{
//printf("\ngetElement\n");
printf("length is %d\n",L->length);
if (L->length==0||i<0||i>=L->length)
return ERROR;
*e=L->data[i-1];
return OK;
}

//insert opration 

int ListInset(Sqlist *L,int i,int e)
{
//printf("\ninsert\n");
int k;
printf("length is %d\n",L->length);
if (L->length==0 || i<0 || i>L->length || L->length>=MAXLENGTH)
return ERROR;
if (i<L->length)
{
for (k=L->length-1;k>=i-1;k--)
{
L->data[k+1]=L->data[k];
}
}
L->data[i-1]=e;
L->length++;
return OK;
}

//Delete opration 

int ListDelete(Sqlist *L,int i)
{
//printf("\ndelete\n");

int k;
printf("length is %d\n",L->length);
if (L->length ==0 || i<0 || i>L->length || L->length>=MAXLENGTH)
return ERROR;
if (i<L->length)
{
for(k=i;k<L->length-1;k++)
{
L->data[k]=L->data[k+1];
}
}
L->data[L->length-1]='\0';
L->length--;
return OK;
}

int main()
{
Sqlist L=
{
{3,1,5,7,12,78,34},
7
};

//printf("list lenth : %d\n",L.length);
int *element=0;
//e=&test;
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}
if (OK==ListInset(&L,7,520))
{
printf("list insert 7 ok!\n");
}
if (OK==getElement(&L,7,element))
{
printf("list get 7 : %d\n",*element);
}
if (OK==ListInset(&L,3,520))
{
printf("list insert 3 ok!\n");
}
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}

if (OK==ListDelete(&L,3))
{
printf("list delete 3 ok!\n");


}
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}
if (OK==ListDelete(&L,6))
{
printf("list delete 6 ok!\n");
}
if (OK==getElement(&L,6,element))
{
printf("list get 6:%d\n",*element);
}
else 
{
printf("list get ERROR!\n");
}
}



代码如上,为什么运行的时候,运行到getElement()函数的时候就跳出。提示错误:
线性表——顺序存储有关问题
请问一下我应该怎么解决这个问题,在网上找了很久也没有找到解决方法? 线性表 C
[解决办法]
    int *element=0;
    //e=&test;
    if (OK==getElement(&L,3,element))


int getElement(Sqlist *L,int i,int *e)
{
    //printf("\ngetElement\n");
    printf("length is %d\n",L->length);
    if (L->length==0
[解决办法]
i<0
[解决办法]
i>=L->length)
        return ERROR;
    *e=L->data[i-1];

element是空指针,但getElement里面却有访问代码
[解决办法]
int element;
if (OK==getElement(&L,3,&element));

热点排行