线性表有两种方法实现,一种是顺序存储实现,另一种是链表存储实现。
顺序存储说白了就是用数组去存储。
简单的实现了增,删,查。
#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 105
typedef struct
{
int data[MAXSIZE];
int Len;
} List;
void printList(List *ptr)
{
printf("表中:");
if(ptr->Len==0)
{
printf("空!\n");
return ;
}
for(int i=1; i<=ptr->Len; i++)
cout<<ptr->data[i]<<" ";
cout<<endl;
return ;
}
void MakeEmpty(List *ptr) //清空
{
for(int i=0; i<MAXSIZE; i++)
ptr->data[i]=0;
ptr->Len=0;
}
void ListInsert(List *ptr,int element,int pos) //增
{
if(ptr->Len==MAXSIZE)
{
printf("表满!\n");
return ;
}
if(pos<1||pos>ptr->Len+1)
{
printf("不在范围内!\n");
return ;
}
if(pos<=ptr->Len+1)
{
for(int i=ptr->Len; i>=pos; i--)
ptr->data[i+1]=ptr->data[i];
}
ptr->data[pos]=element;
ptr->Len++;
return ;
}
int FindListElement(List *ptr,int element)//查
{
for(int i=1; i<=ptr->Len; i++)
if(ptr->data[i]==element)
{
printf("元素%d在第%d个位置上\n",element,i);
return i;
}
printf("不在表中!\n");
return -1;
}
void DeleteElement(List *ptr,int pos)//删
{
if(pos<1||pos>ptr->Len){
printf("不再范围内!\n");
return ;
}
for(int i=pos;i<ptr->Len;i++)
ptr->data[i]=ptr->data[i+1];
ptr->Len--;
return ;
}
int main()
{
List x;
MakeEmpty(&x);
for(int i=1; i<=10; i++)
ListInsert(&x,i,i);
printList(&x);
int pos=FindListElement(&x,2);
DeleteElement(&x,pos);
printList(&x);
for(int i=1;i<5;i++)
ListInsert(&x,0,i);
printList(&x);
return 0;
}