用数组实现线性表

来源:互联网 发布:mes用什么软件 编辑:程序博客网 时间:2024/05/20 19:18
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct node *Ptrl;
struct node{
int  *Data;
int Last;
}; 
Ptrl Dent(int a)//进行初始化 
{
Ptrl T;
T=(Ptrl)malloc(sizeof(Ptrl)*a);
T->Last=-1;
return T;
}
int Find(int X,Ptrl List)//查找下标操作 
{
int i=0;
while(i<=List->Last&&List->Data[i]!=X)
{
i++;
}
if(i>List->Last)
{
return -1;
}
else
{
return i;
}
}
void Insert(int X,int i,int size,Ptrl List)//进行插入操作 
{
if(List->Last==size-1)
{
printf("空间已满\n");
return ;
}
if(i<1||i>size-1)
{
printf("要插入位置异常\n");
return ; 
}
for(int j=List->Last;j>=i-1;j--)
{
List->Data[j+1]=List->Data[j];
}
List->Data[i-1]=X;
List->Last++;
return ;
}
Ptrl Add(Ptrl List,int i)
{
int j,x;
for(j=0;j<i;j++)
{
scanf("%d",&x);
List->Data[j]=x;
List->Last++;
}
return List;
}
void Delete(int x,Ptrl List)
{
int j,i;
while(j<List->Last&&List->Data[j]!=x)
{
j++;
}
if(j>List->Last)
{
printf("不存在该元素\n");
}
for(i=j;i<=List->Last;i++)
{
List->Data[i]=List->Data[i+1];
}
List->Last--;

void print(Ptrl List)//遍历元素 
{
int i;
for(i=0;i<=List->Last;i++)
{
        printf("%d ",List->Data[i]);
}

int main()
{
Ptrl P;
int num,size,j,x;
printf("输入空间大小:"); 
scanf("%d",&size);
P=Dent(size);
printf("输入存储的元素个数:");
scanf("%d",&num);
P=Add(P,num);
printf("输入要查找的元素:");
scanf("%d",&x);
j=Find(x,P);
if(j==-1)
{
printf("不存在该元素\n");
}
else
{
printf("该元素的下标是%d\n",j);
}
printf("输入要插入的元素、位置:");
scanf("%d %d",&x,&j);
Insert(x,j,size,P);
printf("输入要删除的元素:");
scanf("%d",&x);
Delete(x,P); 
printf("线性表的内容:");
print(P);
return 0;
}
0 0
原创粉丝点击