回 帖 发 新 帖 刷新版面

主题:初学者的烦恼----顺序表

各位大哥,,我想建立一个顺序表,可是当运行时候。它就退出啦
能帮我看看什么问题吗??



#include<stdio.h>
#include <stdlib.h>
#define List_init_size 100
#define Listincreatment 10
typedef struct 
  { int *elem;
    int length;
    int listsize;}sqlist;




int initlist_sq(sqlist *L)
{int i;
L->elem=(int *)malloc(List_init_size*sizeof(int));
if(!L->elem){printf("分配空间失败!\n");
            return 0;}
L->length=0; 
L->listsize=List_init_size;
printf("请输入你要在表中存储的信息,并以0结束:\n");
for(i=0;i<6;i++){
printf("L->elem[%d]=",i);
scanf("%d",&L->elem[i]);}
printf("\n");
printf("%5d",L->elem[i]);
printf("\n");

}

main()
{ sqlist *L; int i;
printf("这是关于线性表的一些操作\n\n");
printf("please input a key:");
scanf("%d",&i);
if(i==1)
initlist_sq(L);
}

回复列表 (共6个回复)

沙发

L=(sqlist *)malloc(sizeof(sqlist));

板凳

#include<stdio.h>
#include <stdlib.h>
#define List_init_size 9
#define Listincreatment 10
typedef struct sq
  { int *elem;
    int length;
    int listsize;}sqlist;




void initlist_sq(sqlist *L)
{int i;int *p=NULL;
L->elem=(int *)malloc(List_init_size*sizeof(int));
if(!L->elem){printf("分配空间失败!\n");
            return ;}
L->length=0; 
L->listsize=List_init_size;
printf("请输入你要在表中存储的信息,并以0结束:\n");
for(i=0;i<6;i++){
printf("L->elem[%d]=",i);
scanf("%d",&L->elem[i]);}
printf("\n");
printf("%5d",L->elem[i]);
printf("\n");
     for( i=List_init_size-1;i>=0;i--)
     {
     p=L->elem[i];free (p);
     }
}
int main()

sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
printf("这是关于线性表的一些操作\n\n");
initlist_sq(L);
getchar();
return 0;
}

3 楼


谢谢楼上的~~但为什么还不能打印出整个顺序表呢?谢谢

4 楼

#include<stdio.h>
#include <stdlib.h>
#define List_init_size 10
#define Listincreatment 10
typedef struct sq
  { int *elem;
    int length;
    int listsize;}sqlist;




void initlist_sq(sqlist *L)
{int i;int *p=NULL;
L->elem=(int *)malloc(List_init_size*sizeof(int));
if(!L->elem){printf("分配空间失败!\n");
            return ;}
L->length=0; 
L->listsize=List_init_size;
printf("请输入你要在表中存储的信息,并以0结束:\n");
for(i=0;i<10;i++){
printf("L->elem[%d]=",i);
scanf("%d",&L->elem[i]);}

     for( i=List_init_size-1;i>=0;i--)
     {
printf("\n");
printf("%5d",L->elem[i]);
printf("\n");
     }
}
int main()

sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
printf("这是关于线性表的一些操作\n\n");
initlist_sq(L);
getchar();
return ;
}

 

5 楼

int main()

sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
printf("这是关于线性表的一些操作\n\n");
initlist_sq(L);
getchar();
getchar();//用两个getchar就可以了
return ;
}

6 楼

--------------------------------------问题的增加-----------------------------


再进行插入操作的时候:


#include<stdio.h>
#include <stdlib.h>
#define List_init_size 10
#define Listincreatment 10
typedef struct sq
  { int *elem;
    int length;
    int listsize;}sqlist;




void initlist_sq(sqlist *L)
{int i;int *p=NULL;
L->elem=(int *)malloc(List_init_size*sizeof(int));
if(!L->elem){printf("分配空间失败!\n");
            return ;}
L->length=0; 
L->listsize=List_init_size;
printf("请输入你要在表中存储的信息,并以0结束:\n");
for(i=0;i<10;i++){
printf("L->elem[%d]=",i);
scanf("%d",&L->elem[i]);}

     for( i=List_init_size-1;i>=0;i--)
     {
printf("%5d",L->elem[i]);
printf("\n");
     }
}

void Listinsert_sq(sqlist *L,int i,int e)
{
    if(i<1 || i>L->length+1)
        return ;
    if(L->length>=L->listsize)
    {L->elem=(int *)malloc(L->elem,(L->listsize+Listincreatment)*sizeof(int));
    if(!L->elem)
        exit(OVERFLOW);
    
    L->listsize+=Listincreatment;
    }
    q=&(L->elem[i-1]);
    for(p=&(L->elem[L->length-1];p>=q;--p)
        *(p+1)=*p;
    *q=e;
    ++L->length;
    return OK;
}

void main()
{ int n;
sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
printf("这是关于线性表的一些操作\n\n");printf("please input a key:");scanf("%d",&n);
if(n==1)
initlist_sq(L);
if(n==2)
Listinsert_sq(sqlist *L,int i,int e);
getchar();
return ;
}



出现错误了~~倾指出哪里??谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册