qq_31347911
-征-
2016-04-05 11:36

(C语言版)数据结构线性表从键盘输入元素实现相关功能,不报错,但执行意外终止

  • 数据结构

#include
#include
#define MaxSize 50
typedef char ElemType;
typedef struct{//struct结构体
ElemType data[MaxSize];
int length;
}SqList;
void InitList(SqList &L)//初始化线性表的方法,&是取地址符号,是定义指针符号,如int *b=&a;*a=4
{
L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间
L->length=0;//->是成员指示符,用来访问一个自定义数据类型的成员
}
void DestroyList(SqList *L)//摧毁线性表
{
free(L);
}
bool ListEmpty(SqList *L)//判断线性表是否为空
{
return (L->length==0);
}
int ListLength(SqList *L){//求线性表长度
return (L->length);
}
void DispList(SqList *L){//输出线性表
int i;
if(ListEmpty(L)) return;
for(i=0;ilength;i++)
printf("%c",L->data[i]);
printf("\n");
}
bool GetElem(SqList *L,int i,ElemType &e)//求线性表中某个数据元素值
{
if(iL->length)
return false;
e=L->data[i-1];
return true;
}
int LocateElem(SqList *L,ElemType e)//按元素值查找
{
int i=0;
while(ilength&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
bool ListInsert(SqList *&L,int i,ElemType e){//插入数据元素的方法
int j;
if(iL->length+1)
return false;
i--;
for(j=L->length;j>i;j--)
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *&L,int i,ElemType &e)//删除数据元素
{
int j;
if(iL->length)
return false;
i--;
e=L->data[i];
for(j=i;jlength-1;j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
void main(){
SqList *L;
ElemType e;
int n;
printf("顺序表的基本运算如下:\n");
printf("1.顺序表初始化\n");
printf("2.插入元素\n");
printf("3.求顺序表的长度\n");
printf("4.获取指定元素的位置\n");
printf("5.获取指定位置的元素\n");
printf("6.删除元素\n");
printf("7.输出顺序表的元素\n");
printf("请输入:\n");
scanf("%d",&n);
for(;1 if(n==1)
InitList(L);
else if(n==2){
printf("1.第一次插入;2.后续插入\n");
scanf("%d",&n);
if(n==1){
int m;
printf("请输入要插入的元素个数\n");
scanf("%d",&m);
L->length=m;
for(int i=1;i<=m;i++){
printf("请输入插入的第%d个元素的值:\n",i);
scanf("%c",&e);
ListInsert(L,i,e);}
}
else{
int m;
printf("请输入要插入的元素位置\n");
scanf("%d",&m);
printf("请输入插入的元素的值:\n");
scanf("%c",&e);
ListInsert(L,m,e);
}

}
else if(n==3)
    printf("顺序表的长度=%d\n",ListLength(L));
else if(n==4){
    printf("请输入要查找的元素值:\n");
    scanf("%c",&e);
    printf("元素%c的位置=%d\n",e,LocateElem(L,e));}
else if(n==5){
    printf("请输入元素序号:\n");
    int m;
    scanf("%d",&m);
    GetElem(L,m,e);
    printf("第%d个元素=%c",m,e);
}
else if(n==6){
    printf("请输入元素的序号:\n");
    int m;
    scanf("%d",&m);
    ListDelete(L,m,e);}
else
{
    DispList(L);}


}

}

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答