下面是用c语言实现的顺序表的一些基本操作:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 25 //顺序表最大长度
/*定义顺序表*/
typedef struct
{
int data[MAXSIZE];
int len;
}SeqList;
/*初始化顺序表*/
void InitList(SeqList *L)
{
L->len = 0;
}
/*建立顺序表*/
int CreatList(SeqList *L, int a[], int n)
{
if(n > MAXSIZE)
{
printf("空间不够,无法建立顺序表!");
return 0;
}
for(int i=0; i<n; i++){
L->data[i] = a[i];
}
L->len = n;
return 1;
}
/*遍历操作*/
void PrintList(SeqList *L)
{
for(int i=0;i<L->len;i++){
printf("%d ",(L->data[i]));
}
}
/*判空操作*/
int IsEmpty(SeqList *L)
{
if(L->len == 0){
return 1;
}
else
return 0;
}
/*求顺序表长度*/
int GetLength(SeqList *L)
{
return L->len;
}
/*按值查找*/
int Locate(SeqList *L, int x)
{
int i ;
for( i=0;i<L->len;i++)
{
if(L->data[i] == x)
{
return (i+1); //找到该数,并将其下标返回
}
}
if(i == L->len){
return 0; //代表没有找到
}
}
/*按位查找*/
int Get(SeqList *L, int x, int *ptr)
{
//若查找成功,则通过指针参数ptr返回值
if(x < 1 || x > L->len)
{
printf("查找位置非法,查找错误!!\n");
return 0;
}
else
{
*ptr = L->data[x];
return 1;
}
}
/*插入操作*/
int Insert(SeqList *L, int i, int x)
{
if(L->len > MAXSIZE)
{
printf("上溢错误!!");
return 0 ;
}
if(i<1 || i>L->len)
{
printf("插入位置错误!!!");
return 0;
}
for(int k=L->len;k>i;k--){
L->data[k]=L->data[k-1];
}
L->data[i] = x;
L->len++;
return 1;
}
/*删除操作*/
int Delet(SeqList *L, int i, int *ptr)
{
if(L->len == 0)
{
printf("该顺序表为空!!");
return 0;
}
if(i < 1 || i > L->len)
{
printf("删除位置错误!");
return 0;
}
*ptr = L->data[i-1];
for(int k=i;k<L->len;k++){
L->data[k-1] = L->data[k];
}
L->len--;
return 1;
}
/*修改操作*/
int Modify(SeqList *L, int i, int x)
{
if(i < 1 || i > L->len)
{
printf("位置错误!");
return 0;
}
L->data[i-1] = x;
return 1;
}
int main()
{
int x;
int a[5] = {5, 15, 25, 35, 45};
SeqList list;
InitList(&list); //初始化顺序表
if(IsEmpty(&list))
{
printf("初始化顺序表成功!\n");
}
printf("给表赋值:5,15,25,35,45\n遍历并输出顺序表:\n");
CreatList(&list, a, 5); //建立一个长度为5的顺序表
PrintList(&list); //遍历顺序表
printf("\n在第五位后插入一个500:\n");
Insert(&list, 5, 500);
PrintList(&list);
if(Modify(&list, 3, 250) == 1)
{
printf("\n把第三位改成250\n");
PrintList(&list);
}
if(Delet(&list, 6, &x))
{
printf("\n把倒数第一位删除,删除的值是%d\n", x);
PrintList(&list);
}
system("pause");
return 0;
}