
相信学到软件基础的小伙伴们就一定会接触到这个实验——线性表的顺序存储以及相关 *** 作实现。有的同学苦于时间段,知识储备量不够,难以短时间内完成实验。那么今天小编多方探索,为大家提供一份简单的参考C源文件,亲侧有效,话不多说,上代码:
#define _CRT_SECURE_NO_WARNINGS #include#include 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 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!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)