相信学到软件基础的小伙伴们就一定会接触到这个实验——线性表的顺序存储以及相关操作实现。有的同学苦于时间段,知识储备量不够,难以短时间内完成实验。那么今天小编多方探索,为大家提供一份简单的参考C源文件,亲侧有效,话不多说,上代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef int Position;
typedef int ElementType;
typedef struct LNode * PtrToLNode;
#define MAXSIZE 10
struct LNode
{
ElementType Data[MAXSIZE];
Position Last;
};
typedef PtrToLNode List;
//List L;
//初始化
List MakeEmpty()
{
List L;
L = (List)malloc(sizeof (struct LNode));
L->Last = -1;
return L;
}
//查找
//#define ERROR -1
Position Find(List L,ElementType X)
{
Position i = 0;
while(i<=L->Last&&L->Data[i]!=X){
i++;
}
if(i>L->Last) printf("您查找的数不存在\n");
else printf("您查找数的存储下标为:%d",i);
return 0;
}
//插入
bool Insert (List L ,ElementType X,int i)
{
Position j;
//表空间已满,不能插入
if(L -> Last == MAXSIZE-1){
printf("表满");
return false;
}
//检查插入位序的合法性:是否在1~n+1.
if(i<1||i>L->Last+2){
printf("位序不合法");
return false;
}
for(j=L->Last;j>=i-1;j--){
L->Data[j+1] = L-> Data[j];
}
L->Data[i-1] = X;
L->Last++;
return true;
}
//删除
bool Delete (List L,int i){
Position j;
if(i<1||i>L->Last+1){
printf("位序%d不存在元素\n",i);
}
Else
{
for(j=i;j<=L->Last;j++){
L->Data[j] = L->Data[j+1];
}
L->Last--;
printf("删除成功\n");
}
return 0;}
//求表长
int Length(List L)
{
return L->Last+1;
}
int main(){
List L = MakeEmpty();
int i,n,x,len,cz,del;
//插入
printf("您要输入几位数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&x);
Insert(L,x,i);
}
//输出
printf("输出线性表:\n");
for(i=0;i<n;i++){
printf("%d ",L->Data[i]);
}
printf("\n");
//求表长
len = Length(L);
printf("表长为:%d",len);
printf("\n");
//查找
printf("请输入你要查找的数:\n");
scanf("%d",&cz);
Find(L,cz);
printf("\n");
//删除
printf("请输入你要删除的数的下标:\n",del);
scanf("%d",&del);
Delete(L,del);
printf("输出线性表:\n");
for(i=0;i<=L->Last;i++){
printf("%d ",L->Data[i]);
}
printf("\n");
return 0;
}
结果如下:
希望能为同学提供微薄帮助o!