“SqList”:redefinition;different basic types的问题,还有一堆type 'SqList' does not have an overloaded member 'operator ->'以及cannot convert parameter 1 from 'SqList' to 'SqList *'的问题。数据结构顺序表内容。
#include<stdio.h>
#include<stdlib.h>
#include"SqList.h"
#define MaxSize 100
#define TRUE 1
#define FALSE 0
typedef char ElemType;
typedef struct{
ElemType data[MaxSize];
int length;
}SqList;
//初始化
void InitList_Sq(SqList*L)
{
L->length=0;
}
//写入元素
void WriteList_Sq(SqList &L)
{
int i;
printf("请输入你要写入顺序表的元素的长度:");
scanf("%d", &L->length);
printf("请输入%d个你要放入顺序表里的元素:",L->length);
for (i = 0; i < L->length; i++)
scanf("%s", &L->data[i]);
}
//输出顺序表
void ListTraverse_Sq(SqList*L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("输出顺序表:%s ",L->data[i]);
}
printf("\n");
}
//输出顺序表的长度
int ListLength_Sq(SqList*L)
{
printf("此时的顺序表长度为:%d",L->length);
}
//判断顺序表是否为空
bool ListEmpty_Sq(SqList*L)
{
printf("将判断顺序表是否为空:(TRUE or FALSE)");
if(L->length==0)
return TRUE;
else
return FALSE;
}
//按位序查找元素
char GetList_Sq(SqList*L)
{
int i;
printf("输入你想要查找的元素的位序:%d\n",i);
scanf("%d",&i);
printf("你要查找的第%d个元素是:%s\n",i,L->data[i]);
}
//输出元素的逻辑位置
int LocateElem_Sq(SqList*L,ElemType e)
{
int i=0;
while(i<L->length && L->data[i]!=e)
i++;
if(i<L->length)
return i+1;
else
printf("该元素不存在!");
return 0;
}
//插入元素
bool ListInsert_Sq(SqList*L,int i, ElemType e)
{
int j;
if(i<1 || i>L->length+1 || L->length>=MaxSize)
return FALSE;
i--;
for(j=L->length;j>i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
return TRUE;
}
//删除元素
bool ListDelete_Sq(SqList *&L,int i)
{
int j;
ElemType &e;
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;
}
//释放顺序表
void DestroyList_Sq(SqList *&L)
{
free(L);
}
int main()
{
SqList L;
int i=0,k;
char e1,e2;
InitList_Sq(L);
WriteList_Sq(L);
ListTraverse_Sq(L);
ListLength_Sq(L);
ListEmpty_Sq(L);
GetList_Sq(L);
printf("请输入你要查找位置的元素值:%s",e1);
scanf("%s",&e1);
LocateElem_Sq(L,e1);
printf("请输入你想要在哪一个位置之前插入新的元素:");
scanf("%d",&i);
printf("请输入你想要插入的新的元素:");
scanf("%s",&e2);
ListInsert_Sq(L,i,e2);
ListTraverse_Sq(L);
printf("请输入你要删除的元素的逻辑位序:");
scanf("%d",&k);
ListDelete_Sq(L,k);
ListTraverse_Sq(L);
DestroyList_Sq(L);
}