用C语言编写程序实现顺序表的插入操作,并且从键盘读取元素给顺序表初始化。(要求用VC++工具编写)
这是我写好的代码,但是有错误。希望大侠帮忙指出,并给我正确的代码#include<stdio.h>#include<malloc.h>#defineLISTSIZE100...
这是我写好的代码,但是有错误。希望大侠帮忙指出,并给我正确的代码
#include<stdio.h>
#include<malloc.h>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{
int i;//C++中C程序的变量定义放在开始
L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
printf("请输入线性表长度:");
scanf("%d",&L.length);
printf("为线性表赋值:");
for(i=0;i<=L.length-1;i++)
scanf("%5d",&L.elem[i]);
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}
*q=L.elem[i-1];
for(*p=L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e
void main()
{
void SqList(List &L);
int InsertSq(List &L,int i,int e);
int i,e,k; //函数调用前,变量必须定义
SqList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
for(k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
} 展开
#include<stdio.h>
#include<malloc.h>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{
int i;//C++中C程序的变量定义放在开始
L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
printf("请输入线性表长度:");
scanf("%d",&L.length);
printf("为线性表赋值:");
for(i=0;i<=L.length-1;i++)
scanf("%5d",&L.elem[i]);
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}
*q=L.elem[i-1];
for(*p=L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e
void main()
{
void SqList(List &L);
int InsertSq(List &L,int i,int e);
int i,e,k; //函数调用前,变量必须定义
SqList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
for(k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
} 展开
展开全部
在你的基础上改的
#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{
//int i;//C++中C程序的变量定义放在开始
L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
//printf("请输入线性表长度:");
//scanf("%d",&L.length);
//printf("为线性表赋值:");
//for(i=0;i<=L.length-1;i++)
//scanf("%5d",&L.elem[i]);
L.length =0;//如果是初始化,那么长度就是0
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}
q=&L.elem[i-1];
for(p=&L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e
void PrintList(List L)
{
printf("顺序表中的元素:\n");
for(int k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
printf("\n");
}
void main()
{
//void SqList(List &L);
//int InsertSq(List &L,int i,int e);使用之前已经定义了,可以不用函数说明
List L;
int i,e; //函数调用前,变量必须定义
SqList(L);
printf("输入顺序表中元素的个数:");
scanf("%d",&i);
printf("请输入元素:");
for(int j=1;j<=i;j++)
{
scanf("%d",&e);
InsertSq(L,j,e);
}
PrintList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
PrintList(L);
}
#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{
//int i;//C++中C程序的变量定义放在开始
L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
//printf("请输入线性表长度:");
//scanf("%d",&L.length);
//printf("为线性表赋值:");
//for(i=0;i<=L.length-1;i++)
//scanf("%5d",&L.elem[i]);
L.length =0;//如果是初始化,那么长度就是0
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}
q=&L.elem[i-1];
for(p=&L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e
void PrintList(List L)
{
printf("顺序表中的元素:\n");
for(int k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
printf("\n");
}
void main()
{
//void SqList(List &L);
//int InsertSq(List &L,int i,int e);使用之前已经定义了,可以不用函数说明
List L;
int i,e; //函数调用前,变量必须定义
SqList(L);
printf("输入顺序表中元素的个数:");
scanf("%d",&i);
printf("请输入元素:");
for(int j=1;j<=i;j++)
{
scanf("%d",&e);
InsertSq(L,j,e);
}
PrintList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
PrintList(L);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询