#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdbool.h>
using namespace std;
#define Maxsize 50
typedef char ElemType;
typedef struct
{
ElemType data[Maxsize];
int length;
}SqList;
void InitList(SqList *&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
void CreateList(SqList * &L,ElemType str[],int n)
{
int i=n-1,k=0;
while(i>=0)
{
L->data[k]=str[i];
k++;i--;
}
L->length=k;
}
void DispList(SqList *L)
{
for(int i=0;i<L->length;i++)
cout<<L->data[i]<<" ";
cout<<endl;
}
int ListLength(SqList*L)
{
return(L->length);
}
bool ListEmpty(SqList*L)
{
return(L->length==0);
}
bool GetElem(SqList*L,int i,ElemType &e)
{
if(i<1||i>L->length) return 0;
else
e=L->data[i-1];
return 1;
}
int LocateElem(SqList*L,ElemType e)
{
int j=0,flag;
while(j<L->length&&L->data[j]!=e)
j++;
if(j>=L->length)
return(flag= 0);
else
return(flag= j+1);
}
bool ListInsert(SqList*&L,int i,ElemType e)
{
int j;
if(i<1||i>L->length+1||L->length==Maxsize)
return 0;
i--;
for(j=L->length;j>i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i]=e;
L->length++;
return 1;
}
bool ListDelete(SqList*&L,int i,ElemType&e)
{
int j;
if(i<1||i>L->length)
return false;
i--;
e=L->data[i];
for(j=i;j<L->length-1;j++)
{
L->data[j]=L->data[j+1];
}
L->length--;
return true ;
}
int main()
{
SqList *L;
InitList(L);
char str[Maxsize];
cin>>str;
CreateList(L,str,5);
ListLength(L);
DispList(L);
printf("%d\n",L->length);
ListEmpty(L);
if(L->length==0)printf("empty\n");
else printf("not empty\n");
int i;
cin>>i;
char e;
GetElem(L,i,e);
if(1)cout<<e<<endl;
if(0) cout<<"ERROR"<<endl;
cin>>e;int j,flag;
LocateElem(L,e);
if(flag==0)cout<<"ERROR"<<endl;
if(flag==j+1)cout<<flag<<endl;
cin>>i;
cin>>e;
ListInsert(L,i,e);
if(0)cout<<"ERROE"<<endl;
DispList(L);
cin>>i;
ListDelete(L,i,e);
if(false)cout<<"ERROR"<<endl;
DispList(L);
free(L);
return 0;
}
线性表的操作,为啥调用LocateElem的时候,输入v却没有反应啊,求大神解答。
最新推荐文章于 2023-01-09 23:37:27 发布