顺序表的静态存储:
通过数组保存数据,程序分2个源文件和一个头文件:
sxb.h包含程序需要用到的函数原型和结构声明,一般类型定义
test.c用来测试程序
sxb.c包含用到的函数实现
test.c:
/* 顺序表 */
#include <stdio.h>
#include <windows.h>
#include "sxb.h" //定义SeqList,DataType
void Menu ( void ); //菜单
void PrintSeqList ( SeqList * seq ); //打印顺序表
int main ( )
{
SeqList seqList;
SeqList * seq = &seqList;
Menu ( );
int choice = 0;
DataType x = 0;
size_t pos = 0;
scanf ( "%d", &choice );
while ( 0 != choice )
{
switch ( choice )
{
case 1: InitSeqList ( seq );
break;
case 2: DestorySeqList ( seq );
break;
case 3: if ( SeqListIsEmpty ( seq ) )
{
printf ( "顺序表为空!\n" );
}
else
{
printf ( "顺序表不为空!\n" );
}
break;
case 4: if ( SeqListIsFull ( seq ) )
{
printf ( "顺序表已满!\n" );
}
else
{
printf ( "顺序表未满!\n" );
}
break;
case 5: printf ( "请输入数据: " );
scanf ( "%d", &x );
if ( PushBack ( seq, x ) )
{
printf ( "添加成功!\n" );
}
else
{
printf ( "添加失败!\n" );
}
break;
case 6: if ( PopBack ( seq ) )
{
printf ( "删除成功!\n" );
}
else
{
printf ( "删除失败!\n" );
}
break;
case 7: printf ( "请输入数据: " );
scanf ( "%d", &x );
if ( PushFront ( seq, x ) )
{
printf ( "添加成功!\n" );
}
else
{
printf ( "添加失败!\n" );
}
break;
case 8: if ( PopFront ( seq ) )
{
printf ( "删除成功!\n" );
}
else
{
printf ( "删除失败!\n" );
}
break;
case 9: printf ( "请输入位置: " );
scanf ( "%u", &pos );
printf ( "请输入数值: " );
scanf ( "%d", &x );
int flag = Insert ( seq, pos, x );
if ( 0 == flag )
{
printf ( "添加成功!\n" );
}
else if ( -2 == flag )
{
printf ( "pos位置不合法!\n" );
}
else if ( -1 == flag )
{
printf ( "添加失败!\n" );
}
break;
case 10: printf ( "请输入要查找的元素: " );
scanf ( "%d", &x );
flag = Find ( seq, x );
if ( -2 == flag )
{
printf ( "未找到元素%d!\n", x );
}
else if ( -1 == flag )
{
printf ( "查找失败,表为空!\n" );
}
else
{
printf ( "找到元素%d,位置为%d\n", x, flag );
}
break;
case 11: printf ( "请输入位置: " );
scanf ( "%u", &pos );
if ( Erase ( seq, pos ) )
{
printf ( "删除成功!\n" );
}
else
{
printf ( "删除失败!\n" );
}
break;
case 12: printf ( "请输入要删除元素:" );
scanf ( "%d", &x );
if ( Remove ( seq, x ) )
{
printf ( "删除成功!\n" );
}
else
{
printf ( "删除失败!\n" );
}
break;
case 13: printf ( "请输入要删除元素:" );
scanf ( "%d", &x );
if ( RemoveAll ( seq, x ) )
{
printf ( "删除成功!\n" );
}
else
{
printf ( "删除失败!\n" );
}
break;
case 14: PrintSeqList ( seq );