主题:初学者的烦恼----顺序表
izumi
[专家分:0] 发布于 2007-11-18 22:25:00
各位大哥,,我想建立一个顺序表,可是当运行时候。它就退出啦
能帮我看看什么问题吗??
#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个回复)
沙发
wyjq395 [专家分:2710] 发布于 2007-11-18 23:19:00
L=(sqlist *)malloc(sizeof(sqlist));
板凳
wyjq395 [专家分:2710] 发布于 2007-11-18 23:21:00
#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 楼
izumi [专家分:0] 发布于 2007-11-18 23:38:00
谢谢楼上的~~但为什么还不能打印出整个顺序表呢?谢谢
4 楼
izumi [专家分:0] 发布于 2007-11-19 22:38:00
#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 楼
wyjq395 [专家分:2710] 发布于 2007-11-19 23:07:00
int main()
{
sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
printf("这是关于线性表的一些操作\n\n");
initlist_sq(L);
getchar();
getchar();//用两个getchar就可以了
return ;
}
6 楼
izumi [专家分:0] 发布于 2007-11-19 23:38:00
--------------------------------------问题的增加-----------------------------
再进行插入操作的时候:
#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 ;
}
出现错误了~~倾指出哪里??谢谢
我来回复