#include
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
int elem;
int length;
int listsize;
}SqList;
//初始化
int InitList_Sq(SqList &L)
{
L.elem = (int)malloc(LIST_INIT_SIZE * sizeof(int));
if (!L.elem)
exit(0);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return 1;
}
//查找
int LocateElem(SqList L, int x)
{
int i = 0;
while (i <= L.length - 1 && L.elem[i] != x)
i++;
if (i <= L.length)
return i;
else
return 0;
}
//插入
int ListInsert_Sq(SqList &L, int i, int e)
{
int *q, *p;
if (iL.length)
return 0;
if (L.length>L.listsize)
return 0;
q = &(L.elem[i - 1]);
for (p = &(L.elem[L.length - 1]); p >= q; --p)
*(p + 1) = *p;
*q = e;
++L.length;
return 1;
}
//删除
int ListDelete_Sq(SqList &L, int i, int &e)
{
int *p, *q;
if (iL.length)
return 0;
p = &(L.elem[i - 1]);
e = *p;
q = L.elem + L.length - 1;
for (++p; p <= q; ++p)
*(q - 1) = *q;
--L.length;
return 1;
}
void Out(SqList *L)
{
int i;
for (i = 0; i< L->length; i++)
printf("%d", L->elem[i]);
printf("\n");
}
void main()
{
SqList L;
int i, r;
InitList_Sq(L);
while (1)
{
printf("输入元素,输入0结束插入操作:");
scanf("%d", &r);
if (r== 0)
break;
printf("插入位置:");
scanf("%d", &i);
ListInsert_Sq(L, i,r);
printf("线性表为:");
Out(&L);
}
while (1)
{
printf("输入查找元素,输入0结束查找操作:");
scanf("%d", &i);
if (i == 0)
break;
r = LocateElem(L, i);
if (r == i)
printf("位置为:%d", r + 1);
else
printf("没有");
Out(&L);
}
}
请问是遍历的问题还是插入函数的问题。求教求教