#include <stdio.h>#include <stdlib.h>#define ElemType int#define MaxSize 10 //顺序表最大长度#define InitSize 5 //顺序表初始的长度typedef struct{ElemType *data;int length;}SqList;int InitList(SqList *L){L->data=(ElemType*)malloc(MaxSize*sizeof(ElemType));if(!L->data){printf("存储分配失败\n");return 0;}ElemType *p=L->data;for(int i=0;i<InitSize;i++){*p=i+1;p++;}//顺序表初始元素为1 2 3 4 5L->length=InitSize;return 1;}//初始化顺序表int LocateElem(SqList *L,ElemType e){ElemType *p=L->data;int flag=0;//printf("%d ",*p);for(int i=0;i<L->length;i++){if(*p==e){flag=1;return i+1;}p++;}if(flag==0){printf("顺序表中没有元素%d\n",e);return 0;}}//返回所要查找的元素e在顺序表中的位置int ListInsert(SqList *L,int i,ElemType e){ElemType *p=L->data+L->length-1;if(i<1||i>MaxSize){return 0;}//判断元素插入的位置是否有效if(L->length>=MaxSize){return 0;}//判断插入是否会发生越界if(i>L->length){*(p+1)=e;L->length=L->length+1;return 1;}for(int j=0;j<L->length-i+1;j++){*(p+1)=*p;p--;}*(p+1)=e;L->length=L->length+1;return 1;}//将元素e插入到i的位置int ListDelete(SqList *L,int i){ElemType *p=L->data+i-1;if(i<1||i>MaxSize){return 0;}//判断元素删除的位置是否有效if(L->length<1){return 0;}//判断插入是否会发生越界if(i==L->length){L->length=L->length-1;return 1;}for(int j=0;j<L->length-i;j++){*p=*(p+1);p++;}L->length=L->length-1;return 1;}//删除位于顺序表i位置的元素void PrintList(SqList *L){ElemType *p=L->data;printf("输出顺序表:");for(int i=0;i<L->length;i++){printf("%d ",*p);p++;}printf("\n");printf("顺序表长度:%d\n",L->length);}//打印出顺序表void main(){SqList L;int e;InitList(&L);ListInsert(&L,3,6);ListDelete(&L,1);printf("所要查找的元素位置为:%d\n",LocateElem(&L,3));PrintList(&L);}
转载于:https://www.cnblogs.com/Yshun/p/11123357.html
