求助求助,程序没法运行,请大神帮忙!
#include<stdio.h>#defineOK1#defineERROR0#defineElemTypeint#defineMAXSIZE100/*此处的宏定义常量...
#include <stdio.h>
#define OK 1
#define ERROR 0
#define ElemType int
#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
int length;
int data[10];
}SeqList;
void InitList(SeqList *L)
{
L=(SeqList *)malloc(sizeof(SeqList));
L->length=0;
}
void Creatlist(SeqList *L)
{
int i;
int n;
for (i=0;i<n;i++)
L->data[i]=L->elem[i];
L->length=n;
}
void Output_L(SeqList *L)
{
int i;
printf("输出结果:\n");
for(i=0;i<L->length;i++)
printf("%d",L->elem[i]);
}
void main()
{
int InsList(SeqList *L,int i,ElemType e);
int Locate(SeqList L, ElemType x);
int DelList(SeqList *L,int i,ElemType *e);
SeqList *L;
int i=0;
int a,e,m,x,y,z;
InitList(L);
Creatlist(L);
printf("请输入顺序表中的数据:");
scanf("%d",&a);
while(a!=0)
{
L->elem[i]=a;
i++;
scanf("%d",&a);
}
Output_L(L);
printf("请输入需要插入的数据与在顺序表中第几个元素前插入:");
scanf("%d,%d",e,m);
InsList(L,m,e);
printf("\n");
printf("请输入需要查询的数据:");
scanf("%d",x);
Locate(*L,x);
printf("\n");
printf("请输入需要删除的数据与在顺序表中的位置:");
scanf("%d,%d",y,z);
DelList(L,y,z);
}
int InsList(SeqList *L,int i,ElemType e)
/*在顺序表L中第i个数据元素之前插入一个元素e。 插入前表长n=L->last+1,i的合法取值范围是 1≤i≤L->last+2 */
{
int k;
if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) /*为插入元素而移动位置*/
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; /*在C语言数组中,第i个元素的下标为i-1*/
L->last++;
return(OK);
Output_L(L);
}
int Locate(SeqList L, ElemType x)
/*在顺序表L中查找与x相等的元素,若L.elem[i]=x,则找到该元素,并返回i+1,若找不到,则返回-1。*/
{
int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=L.last)&&(L.elem[i]!=x))/*顺序扫描表,直到找到值为x的元素, 或扫描到表尾而没找到*/
i++;
if (i<=L.last)
return(i+1); /*若找到值为x的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i; i<=L->last; k++)
L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
Output_L(L);
} 展开
#define OK 1
#define ERROR 0
#define ElemType int
#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
int length;
int data[10];
}SeqList;
void InitList(SeqList *L)
{
L=(SeqList *)malloc(sizeof(SeqList));
L->length=0;
}
void Creatlist(SeqList *L)
{
int i;
int n;
for (i=0;i<n;i++)
L->data[i]=L->elem[i];
L->length=n;
}
void Output_L(SeqList *L)
{
int i;
printf("输出结果:\n");
for(i=0;i<L->length;i++)
printf("%d",L->elem[i]);
}
void main()
{
int InsList(SeqList *L,int i,ElemType e);
int Locate(SeqList L, ElemType x);
int DelList(SeqList *L,int i,ElemType *e);
SeqList *L;
int i=0;
int a,e,m,x,y,z;
InitList(L);
Creatlist(L);
printf("请输入顺序表中的数据:");
scanf("%d",&a);
while(a!=0)
{
L->elem[i]=a;
i++;
scanf("%d",&a);
}
Output_L(L);
printf("请输入需要插入的数据与在顺序表中第几个元素前插入:");
scanf("%d,%d",e,m);
InsList(L,m,e);
printf("\n");
printf("请输入需要查询的数据:");
scanf("%d",x);
Locate(*L,x);
printf("\n");
printf("请输入需要删除的数据与在顺序表中的位置:");
scanf("%d,%d",y,z);
DelList(L,y,z);
}
int InsList(SeqList *L,int i,ElemType e)
/*在顺序表L中第i个数据元素之前插入一个元素e。 插入前表长n=L->last+1,i的合法取值范围是 1≤i≤L->last+2 */
{
int k;
if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) /*为插入元素而移动位置*/
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; /*在C语言数组中,第i个元素的下标为i-1*/
L->last++;
return(OK);
Output_L(L);
}
int Locate(SeqList L, ElemType x)
/*在顺序表L中查找与x相等的元素,若L.elem[i]=x,则找到该元素,并返回i+1,若找不到,则返回-1。*/
{
int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=L.last)&&(L.elem[i]!=x))/*顺序扫描表,直到找到值为x的元素, 或扫描到表尾而没找到*/
i++;
if (i<=L.last)
return(i+1); /*若找到值为x的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i; i<=L->last; k++)
L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
Output_L(L);
} 展开
展开全部
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define ElemType int
#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
int length;
int data[10];
}SeqList;
void InitList(SeqList **L)
{
*L=(SeqList *)malloc(sizeof(SeqList));
(*L)->length=0;
}
void Creatlist(SeqList *L)
{
int i;
int n;
for (i=0;i<n;i++)
L->data[i]=L->elem[i];
L->length=n;
}
void Output_L(SeqList *L)
{
int i;
printf("输出结果:\n");
for(i=0;i<L->length;i++)
printf("%d",L->elem[i]);
}
void main()
{
int InsList(SeqList *L,int i,ElemType e);
int Locate(SeqList L, ElemType x);
int DelList(SeqList *L,int i,ElemType *e);
SeqList *L;
int i=0;
int a,e,m,x,y,z;
ElemType tmp;
InitList(&L);
//Creatlist(L);
printf("请输入顺序表中的数据:");
scanf("%d",&a);
while(a!=0)
{
L->elem[i]=a;
i++;
L->length++;
scanf("%d",&a);
}
Output_L(L);
printf("请输入需要插入的数据与在顺序表中第几个元素前插入:");
scanf("%d,%d", &e, &m);
InsList(L,m,e);
printf("\n");
printf("请输入需要查询的数据:");
scanf("%d", &x);
Locate(*L,x);
printf("\n");
printf("请输入需要删除的数据在顺序表中的位置:");
scanf("%d",&y);
DelList(L,y, &tmp);
}
int InsList(SeqList *L,int i,ElemType e)
/*在顺序表L中第i个数据元素之前插入一个元素e。 插入前表长n=L->last+1,i的合法取值范围是 1≤i≤L->last+2 */
{
int k;
if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) /*为插入元素而移动位置*/
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; /*在C语言数组中,第i个元素的下标为i-1*/
L->last++;
return(OK);
Output_L(L);
}
int Locate(SeqList L, ElemType x)
/*在顺序表L中查找与x相等的元素,若L.elem[i]=x,则找到该元素,并返回i+1,若找不到,则返回-1。*/
{
int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=L.last)&&(L.elem[i]!=x))/*顺序扫描表,直到找到值为x的元素, 或扫描到表尾而没找到*/
i++;
if (i<=L.last)
return(i+1); /*若找到值为x的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i; i<=L->last; k++)
L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
Output_L(L);
}
我只改了部分 剩下的交给LZ了 GOOD LUCK
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询