欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

顺序表--C语言描述

程序员文章站 2024-03-20 14:24:22
...

以下为关键代码

#include<stdio.h>
#define MAXLEN 100
//定义顺序表结构体类型
typedef struct
{
char key[10];
char name[20];
int age;
}DATA;
typedef struct
{
DATA ListData[MAXLEN+1];
int ListLen;
}SLType;
//初始化顺序表
void SLInit(SLType *SL)
{
SL->ListLen=0;
}
//计算顺序表长度
int SLLength(SLType *SL)
{
return SL->ListLen;
}
//插入结点
int SLInsert(SLType *SL,int n,DATA data)
{
int i;
if(SL->ListLen>=MAXLEN)
{
printf("顺序表已满,不能插入结点!\n");
return 0;
}
if(n<1||n>SL->ListLen-1)
{
printf("插入结点数量超出了顺序表最大长度!\n");
return 0;
}
for(i=SL->ListLen;i>=n;i--)
{
SL->ListData[i+1]=SL->ListData[i];
}
SL->ListData[n]=data;
SL->ListLen++;
return 1;
}
//追加结点
int SLAdd(SLType *SL,DATA data)
{
if(SL->ListLen>=MAXLEN)
{
printf("顺序表已满,不能再添加结点了!");
return 0;
}
SL->ListData[++SL->ListLen]=data;
return 1;
}
//删除结点
int SLDelete(SLType *SL,int n)
{
int i;
if(n<1||n>SL->ListLen)
{
printf("删除结点序号错误,不能删除结点!");
return 0;
}
for(i=n;i<SL->ListLen;i++)
{
SL->ListData[i]=SL->ListData[i+1];
}
SL->ListLen--;
return 1;
}
//查找结点
//按序号查找
DATA *SLFindByNum(SLType *SL,int n)
{
if(n<1||n>SL->ListLen)
{
printf("结点序号错误,不能返回结点!");
return 0;
}
return &(SL->ListData[n]);
}
DATA *SLFindByKey(SLType *SL,char *key)
{
int i;
for(i=1;i<SL->ListLen;i++)
{
if(strcmp(SL->ListData[i].key,key)==0)
{
return 1;
}
}
return NULL;
//显示所有结点
int SLAll(SLType *SL)
{
int i;
for(i=1;i<SL->ListLen;i++)
{
printf("(%s,%s,%d)\n",SL->ListData[i].key,SL->ListData[i].name,SL->ListData[i].age);
}
return 0;
}