顺序存储
顺序存储的主要核心就是数组,直接对数组进行操作。
/*
*线性表
*/
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define MAX 100
typedef struct SqList
{
int data[MAX];
int length;
}Sqlist;
int init_list(Sqlist *&L)
{
L=(Sqlist *)malloc(sizeof(Sqlist));
L->length=0;
return 1;
}
int show_list(Sqlist *L)
{
if(L->length==0)
{
printf("this is a empty list\n");
return 0;
}
for(int i=0;i<L->length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
return 0;
}
int searchValue_list(Sqlist *L,int e)
{
int i;
for(i=0;i<L->length;i++)
if(L->data[i]==e) break;
if(i==L->length)
{
printf("%d not found \n",e);
return -1;
}
else
{
printf("%d is found at %d",e,i+1);
return i+1;
}
}
int deleteIndex_list(Sqlist *L,int i)
{
if(i<1||i>L->length)
{
printf("delete wrong position %d\n",i);
return -1;
}
i--;
for(int j=i;j<L->length;j++) L->data[j]=L->data[j+1];
L->length--;
return 0;
}
int insert_list(Sqlist *L,int i,int e)
{
if(i<1||i>L->length+1)
{
printf("insert wrong position %d\n",i);
return -1;
}
for(int j=L->length;j>=i;j--) L->data[j]=L->data[j-1];
L->data[i-1]=e;
L->length++;
return 0;
}
int main(void)
{
Sqlist *L;
init_list(L);
insert_list(L,1,5);
insert_list(L,1,5);
insert_list(L,2,2);
show_list(L);
searchValue_list(L,2);
}
链式存储
太麻烦,不想写