主题:这个程序哪里出现了问题?请高手指教!
#define Maxsize 50
#include <stdio.h>
typedef char ElemType;
struct List {
ElemType list[Maxsize];
int size;
};
void setnull(struct List *p)
{
p->size=0;
}
int length (struct List *p)
{
return (p->size);
}
ElemType get (struct List *p,int i)
{
if (i<1 && i>p->size)
printf("error");
else
return(p->list[i-1]);
}
int locate(struct List *p,ElemType x)
{
int i=0;
while (i<p->size && p->list [i]!=x)i++;
if(i==p->size)
return (-1);
else
return(i+1);
}
void insert(struct List *p,ElemType x,int i)
{
int j;
if (i<1 && i>p->size+1)
printf("error");
else
{
p->size++;
for(j=p->size-1;j>=i;j--)
p->list[j]=p->list[j-1];
p->list[j]=x;
}
}
int delete(struct List *P,int i)
{
int j;
if(i>p->size||i<1)
printf("error");
else
{
for(j=i-1;j<p->size-1;j++)
p->list[j]=p->list[j+1];
p->size--;
}
return 0;
}
void display (struct List *p)
{
int j;
if(p->size==0)
printf("error");
else
{
printf("循序表:");
if (p->size==1)
printf("%c",p->list[p->size]);
else{
for(j=0;j<p->size-1;j++)
printf("%c->",p->list[j]);
printf("%c",p->list[j]);
}
printf("\n");
}
}
void main()
{
struct List L;
setnull (&L);
insert(&L,'a',1);
insert(&L,'b',2);
insert(&L,'a',1);
insert(&L,'c',2);
insert(&L,'d',1);
insert(&L,'e',2);
display(&L);
printf("值:%c 位置:%d\n",'a',locate(&L,'a'));
printf("位置:%d 值:%c\n",4,get(&L,4));
printf("删除第2个结点后");
delete (&L,2);
display(&L);
printf("删除第2个结点后");
delete(&L,2);
display(&L);
printf("删除第1个结点后");
delete(&L,1);
display(&L);
printf("删除第1个结点后");
delete(&L,1);
display(&L);
}
#include <stdio.h>
typedef char ElemType;
struct List {
ElemType list[Maxsize];
int size;
};
void setnull(struct List *p)
{
p->size=0;
}
int length (struct List *p)
{
return (p->size);
}
ElemType get (struct List *p,int i)
{
if (i<1 && i>p->size)
printf("error");
else
return(p->list[i-1]);
}
int locate(struct List *p,ElemType x)
{
int i=0;
while (i<p->size && p->list [i]!=x)i++;
if(i==p->size)
return (-1);
else
return(i+1);
}
void insert(struct List *p,ElemType x,int i)
{
int j;
if (i<1 && i>p->size+1)
printf("error");
else
{
p->size++;
for(j=p->size-1;j>=i;j--)
p->list[j]=p->list[j-1];
p->list[j]=x;
}
}
int delete(struct List *P,int i)
{
int j;
if(i>p->size||i<1)
printf("error");
else
{
for(j=i-1;j<p->size-1;j++)
p->list[j]=p->list[j+1];
p->size--;
}
return 0;
}
void display (struct List *p)
{
int j;
if(p->size==0)
printf("error");
else
{
printf("循序表:");
if (p->size==1)
printf("%c",p->list[p->size]);
else{
for(j=0;j<p->size-1;j++)
printf("%c->",p->list[j]);
printf("%c",p->list[j]);
}
printf("\n");
}
}
void main()
{
struct List L;
setnull (&L);
insert(&L,'a',1);
insert(&L,'b',2);
insert(&L,'a',1);
insert(&L,'c',2);
insert(&L,'d',1);
insert(&L,'e',2);
display(&L);
printf("值:%c 位置:%d\n",'a',locate(&L,'a'));
printf("位置:%d 值:%c\n",4,get(&L,4));
printf("删除第2个结点后");
delete (&L,2);
display(&L);
printf("删除第2个结点后");
delete(&L,2);
display(&L);
printf("删除第1个结点后");
delete(&L,1);
display(&L);
printf("删除第1个结点后");
delete(&L,1);
display(&L);
}