文章目录
一、线性表
1.定义
由同类型数据元素构成有序序列的线性结构。
2.线性表的实现
(1)顺序存储实现
(利用数组的连续存储空间顺序存放线性表的各元素)
①初始化:
List MakeEmpty()
{
List PtrL;
PtrL=(List)malloc(sizeof(struct Lnode));
PtrL->Last=-1;
return PtrL;
}
②查找函数:
int Find(int x,List PtrL)
{
int i=0;
while(i<=PtrL->Last&&PtrL->Data[i]!=x)
i++;
if(i>PtrL->Last)
return -1;
else
return i;
}
③插入函数:
void Insert(int x,int i,List Ptrl)
{
int j;
if(Ptrl->Last==Max-1)
{
printf("表满");
return 0;
}
if(i<1||i>Ptrl->Last+2)
{
printf("位置不合法");
return 0;
}
for(j=Ptrl->Last;j>=i-1;j--)
{
Ptrl->Data[j+1]=Ptrl->Data[j];
}
Ptrl->Data[i-1]=x;
Ptrl->Last++;
}
④删除函数:
void Delete(int i,List Ptrl)
{
int j;
if(i<1||i>Ptrl->Last+1)
{
printf("位置不合法");
return 0;
}
for(j=i;j<=Ptrl->Last;j++)
{
Ptrl->Data[j-1]=Ptrl->Data[ j];
}
Ptrl->Last--;
return 0;
}
⑤显示函数:
void Show(List Ptrl)
{
int i;
for(i=0;i<=Ptrl->Last;i++)
{
printf("the number%d is %d\n",i+1,Ptrl->Data[i]);
}
}
⑥完整代码:
#include<stdio.h>
#include<stdlib.h>
#define Max 500
typedef struct Lnode*List;
struct Lnode
{
int Data[Max];
int Last;
};
List MakeEmpty()
{
List PtrL;
PtrL=(List)malloc(sizeof(struct Lnode));
PtrL->Last=-1;
return PtrL;
}
int Find(int x,List PtrL)
{
int i=0;
while(i<=PtrL->Last&&PtrL->Data[i]!=x)
i++;
if(i>PtrL->Last)
return -1;
else
return i;
}
void Insert(int x,int i,List Ptrl)
{
int j;
if(Ptrl->Last==Max-1)
{
printf("表满");
return 0;
}
if(i<1||i>Ptrl->Last+2)
{
printf("位置不合法");
return 0;
}
for(j=Ptrl->Last;j>=i-1;j--)
{
Ptrl->Data[j+1]=Ptrl->Data[j];
}
Ptrl->Data[i-1]=x;
Ptrl->Last++;
}
void Delete(int i,List Ptrl)
{
int j;
if(i<1||i>Ptrl->Last+1)
{
printf("位置不合法");
return 0;
}
for(j=i;j<=Ptrl->Last;j++)
{
Ptrl->Data[j-1]=Ptrl->Data[ j];
}
Ptrl->Last--;
return 0;
}
void Show(List Ptrl)
{
int i;
for(i=0;i<=Ptrl->Last;i++)
{
printf("the number%d is %d\n",i+1,Ptrl->Data[i]);
}
}
int main()
{
List Ptrl;
int i;
int size;
int choice;
int number;
int index;
printf("please enter the size:");
scanf("%d",&size);
Ptrl=MakeEmpty();
for(i=0;i<size;i++)
{
printf("please enter the number%d:",i+1);