顺序表的各种基本算法问题?
//文件名:exp2-1.cpp
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 50
typedef char elemtype;
typedef struct
{
elemtype date[MAXSIZE];
int len;
}Sqlist;
//初始化顺序表
Sqlist *Initlist(Sqlist *L)
{
L=(Sqlist *)malloc(sizeof(Sqlist));
L->len=0;
return L;
}
//释放顺序表
void Freelist(Sqlist *L)
{
free(L);
}
//判断顺序表L是否为空表
int Listempty(Sqlist *L)
{
return(L->len==0);
}
//返回顺序表L的元素个数
int Listlength(Sqlist *L)
{
return(L->len);
}
//输出顺序表L
void Displist(Sqlist *L)
{
int i;
if(Listempty(L)) return;
for(i=0;i<L->len;i++)
printf("%c",L->date[i]);
printf("\n");
}
//获取顺序表L中第i个元素
int Getelem(Sqlist *L,int i,elemtype *e)
{
if(i<1||i>L->len)
return 0;
e=L->date+(i-1);
return 1;
}
//在顺序表中查找元素e
int Locateelem(Sqlist *L,elemtype e)
{
int i=0;
while(i<L->len&&L->date[i]!=e)
i++;
if(i>=L->len)
return 0;
else
return i+1;
}
//在顺序表L中第i个位置上插入元素e
int Listinsert(Sqlist *L, int i, elemtype e)
{
int j;
if(i<1||i>L->len+1)
return 0;
for(j=L->len-1;j>=i-1;j--)
L->date[j+1]=L->date[j];
L->date[i-1]=e;
L->len++;
return 1;
}
//在顺序表L中删除第i个元素
int Listdelete(Sqlist *L,int i)
{
int j;
if(i<1||i>L->len)
return 0;
for(j=i-1;j<L->len-1;j++)
L->date[j]=L->date[j+1];
L->len--;
return 1;
}
//主函数
void main()
{
Sqlist *L=NULL;
elemtype *e=NULL;
printf("(1)初始化顺序表L\n");
L=Initlist(L);
printf("(2)依次采用尾插入法插入a,b,c,d,e元素\n");
Listinsert(L,1,'a');
Listinsert(L,2,'b');
Listinsert(L,3,'c');
Listinsert(L,4,'d');
Listinsert(L,5,'e');
printf("(3)输出顺序表L:");
Displist(L);
printf("(4)顺序表L长度=%d\n",Listlength(L));
printf("(5)顺序表L为%s\n",(Listempty(L)?"空":"非空"));
Getelem(L,3,e);
printf("(6)顺序表L的第3个元素=%c\n",e);
printf("(7)元素a的位置=%d\n",Locateelem(L,'a'));
printf("(8)在第4个元素位置上插入f元素\n");
Listinsert(L,4,'f');
printf("(9)输出顺序表L:");
Displist(L);
printf("(10)删除L的第3个元素\n");
Listdelete(L,3);
printf("(11)输出顺序表L:");
Displist(L);
printf("(12)释放顺序表L\n");
Freelist(L);
}
运行结果:
(1)初始化顺序表L
(2)依次采用尾插入法插入a,b,c,d,e元素
(3)输出顺序表L:abcde
(4)顺序表L长度=5
(5)顺序表L为非空
(6)顺序表L的第3个元素=
(7)元素a的位置=1
(8)在第4个元素位置上插入f元素
(9)输出顺序表L:abcfde
(10)删除L的第3个元素
(11)输出顺序表L:abfde
(12)释放顺序表L
为什么第六步结果出不来????
请求各位高手指点下!!!
谢谢咯!!!!