顺序表
在原基础上添加了一些小功能,也看过比较全面的对表的操作,这里只实现了一些
1) 插入一个配送信息
2) 查询一个配送信息
3) 按序号插入一个配送信息
4) 删除一个配送信息
5) 显示所有配送信息
6) 读入文件
7) 退出
最基础但也最重要:建立空表
#include "stdio.h"
#include "String.h"
#define MaxSize 20
#define OverFlow -1
#define OK 1
#define Error -1
typedef struct
{
char num[7]; /*序号*/
char id[10]; /*配送编号*/
char name[10]; /*姓名*/
char addr[20]; /*地址*/
}ElemType;
typedef struct
{
ElemType Element[MaxSize];
int Length; /*线性表的长度*/
}SeqList; /*说明List数据类型*/
void Init_SeqList(SeqList *L) /*构造一个空表*/
{
L ->Length =0;
}
- 插入一个配送信息
int Insert_Last(SeqList *L,ElemType x);
先判断表是否已满,如果未满,则在表尾插入信息,后长度加一
int Insert_Last(SeqList *L,ElemType x)
{
if (L->Length==MaxSize)
{ printf("表满");
return OverFlow;
}
else
{ /*在表尾插入一个配送数据*/
L->Element[L->Length]=x;
L->Length ++ ; /*线性表长度加1*/
return OK; /*插入成功,返回*/
}
}
2.查询一个配送信息
从头开始找,比较姓名信息是否相同
int Location_SeqList(SeqList *L, char *x)/*查找指定姓名的配送数据*/
{
int i=0;
while(i< L ->Length && strcmp(L ->Element[i] .name,x))
i++;
if (i== L ->Length) return -1; /*查找失败*/
else return i+1; /*返回x的逻辑位置 */
}
3.按序号插入一个配送信息
int Insert2_SeqList(SeqList *L,int i,ElemType x);
从表尾开始,将前一个的信息赋给后一个,一直到要插入序号处
将要插入的新的信息赋值给插入序号处
这里将插入的序号等同于第几个信息了
(也就是说第一个信息序号相当于1)
int Insert2_SeqList(SeqList *L,int i,ElemType x)
{
int j;
for(j=L->Length;j>=i;j--)
L->Element[j]=L->Element[j-1];
L->Element[i-1]=x;
L->Length++;
printf("插入成功\n");
return OK;
}
4.删除一个配送信息
int Delete_SeqList(SeqList * L, int i);
先判断是否有第i个元素
如果有,从第i-1号元素开始,所有元素都往前(往左)移动一位,长度减一
int Delete_SeqList(SeqList * L, int i)/*删除线性表的第i个元素*/
{
int j;
if(i<1 || i> L ->Length) /*判断参数的正确性*/
{
printf ("不存在第i个元素");
return Error ;
}
for(j=i-1;j<=L ->Length-1; j++) /*删除*/
L ->Element[j]= L ->Element[j+1]; /*向左移动*/
L ->Length--; /*线性表长度减1*/
printf("删除成功\n");
return OK ;
}
5.显示所有配送信息
void Show_SeqList(SeqList * L) ;
先判断是否为空表,不为空则从头开始挨个输出
void Show_SeqList(SeqList * L) /*遍历线性表*/
{ int j;
printf("\n");
if (L ->Length==0)
printf("空表(NULL)!\n");
else
for(j=0;j< L ->Length; j++) /*显示*/
printf(" %7s %10s %10s %7s \n ",
L->Element[j].num, L->Element[j].id,
L->Element[j].name, L->Element[j].addr);
printf("\n");
}
6.读入文件
这是个老问题了,就不多说啦