顺序表检验bo2-1.h的主程序
以下内容为main2-1.cpp
#include "c1.h"
typedef int ElemType;
#include "c2-1.h"
#include "bo2-1.h"
#include "fun2-2.h"
Status sq(ElemType c1, ElemType c2)
{
if(c1 == c2*c2)
{
return TRUE;
}
else
{
return FALSE;
}
}
void db1(ElemType & c)
{
c *= 2;
return;
}
void main()
{
SqList L;
ElemType e, e0;
Status i;
int j,k;
InitList(L);
printf("初始化L后,L.length = %d, L.listsize = %d, L.elem = %u\n", L.length, L.listsize, L.elem);
for(j = 1; j <= 5; j++)
{
i = ListInsert(L, 1, j);
}
printf("在L的表头依次插入1~5后, *L.elem = ");
for(j = 1; j <= 5; j++)
{
printf("%d", *(L.elem+j-1));
}
printf("\n调用ListTraverse()函数,依次输出表L中的元素:");
ListTraverse(L, print1);
i = ListEmpty(L);
printf("L.length = %d, L.listsize = %d(不变),", L.length, L.listsize);
printf("L.elem = %u(不变),L是否为空?i = %d(1:是 0:否)\n", L.elem, i);
ClearList(L);
i = ListEmpty(L);
printf("清空L后,L.length = %d, L.listsize = %d, ", L.length, L.listsize);
printf("L.elem = %u, L是否空?i = %d(1:是 0:否)\n", L.elem, i);
for(j = 1; j <= 10; j++)
{
ListInsert(L, j, j);
}
printf("在L的表尾依次插入1~10后,L = ");
ListTraverse(L, print1);
printf("L.length = %d, L.listsize = %d, L.elem = %u\n", L.length, L.listsize, L.elem);
ListInsert(L, 1, 0);
printf("在L的表头插入0后,L.length = %d, L.listsize = %d(改变), L.elem = %u(可能改变)\n", L.length, L.listsize, L.elem);
GetElem(L, 5, e);
printf("第5个元素的值为%d\n", e);
for(j = 10; j <= 11; j++)
{
k = LocateElem(L, j, equal);
if(k)
{
printf("第%d个元素的值为%d,", k, j);
}
else
{
printf("没有值为%d的元素\n",j);
}
}
for(j = 3; j <= 4; j++)
{
k = LocateElem(L, j, sq);
if(k)
{
printf("第%d个元素的值为%d的平方", k, j);
}
else
{
printf("没有值为%d的平方的元素\n", j);
}
}
for(j = 1; j <= 2; j++)
{
GetElem(L, j, e0);
i = PriorElem(L, e0, e);
if(i == ERROR)
{
printf("元素%d无前驱,", e0);
}
else
{
printf("元素%d的前驱为%d\n",e0 , e);
}
}
for(j = ListLength(L) - 1; j <= ListLength(L); j++)
{
GetElem(L, j, e0);
i = NextElem(L, e0, e);
if(i == ERROR)
{
printf("元素%d无后继\n", e0);
}
else
{
printf("元素%d的后继为%d, ", e0, e);
}
}
k = ListLength(L);
for(j = k+1; j >= k; j--)
{
i = ListDelete(L, j, e);
if(i == ERROR)
{
printf("删除第%d个元素失败, ", j);
}
else
{
printf("删除第%d个元素成功,其值为%d", j, e);
}
}
ListTraverse(L, db1);
printf("L的元素值加倍后,L = ");
ListTraverse(L, print1);
DestroyList(L);
printf("销毁L后, L.length = %d, L.listsize = %d, L.elem = %u\n", L.length, L.listsize, L.elem);
}
运行结果
初始化L后,L.length = 0, L.listsize = 10, L.elem = 9131304
在L的表头依次插入1~5后, *L.elem = 54321
调用ListTraverse()函数,依次输出表L中的元素:54321
L.length = 5, L.listsize = 10(不变),L.elem = 9131304(不变),L是否为空?i = 0(1:是 0:否)
清空L后,L.length = 0, L.listsize = 10, L.elem = 9131304, L是否空?i = 1(1:是 0:否)
在L的表尾依次插入1~10后,L = 12345678910
L.length = 10, L.listsize = 10, L.elem = 9131304
在L的表头插入0后,L.length = 11, L.listsize = 12(改变), L.elem = 9131304(可能改变)
第5个元素的值为4
第11个元素的值为10,没有值为11的元素
第10个元素的值为3的平方没有值为4的平方的元素
元素0无前驱,元素1的前驱为0
元素9的后继为10, 元素10无后继
删除第12个元素失败, 删除第11个元素成功,其值为10
L的元素值加倍后,L = 024681012141618
销毁L后, L.length = 0, L.listsize = 0, L.elem = 0
F:\Personal\数据结构(C语言实现)\严书\VS目录\Data Structure\Debug\Data Structure.exe (进程 18708)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .