#include <stdio.h> #include <stdlib.h> #define ElementType int #define MAXSIZE 100 typedef struct{ ElementType Data[MAXSIZE]; int Last; }List;//list在前面和后面效果是一样的 List *MakeEmpty(); ElementType FindKth(int K, List *PtrL); int Find(ElementType X,List *PtrL); void Insert(ElementType X, int i, List *PtrL); void Delete(int i, List *PtrL); int Length(List *PtrL); void LPrint(List *PtrL){ for(int i = 0; i<PtrL->Last;i++) printf("%d\n",PtrL->Data[i]); } int main(){ List L,*PtrL;//访问下标为i的元素 L.Data[i]或Ptrl->Data[i] //线性表的长度:L.Last+1或Ptrl->Last+1 PtrL = MakeEmpty(); for(int i = 0; i< 10;i++){ Insert(i,i,PtrL); } Insert(15,5,PtrL); LPrint(PtrL); Delete(5,PtrL); LPrint(PtrL); return 0; } //初始化,建立空的顺序表 List *MakeEmpty(){ List *PtrL; PtrL = (List *)malloc(sizeof(List)); PtrL->Last=0; return PtrL; } ElementType FindKth(int K, List L){ return L.Data[K-1]; } int Find(ElementType X,List L){ List *PtrL = &L; int i = 0; for(i =0;i<=PtrL->Last;i++) if(PtrL->Data[PtrL->Last]==X) break; if(i>PtrL->Last) return -1; else return i; } void Insert(ElementType X, int i, List *PtrL){//按第i个位置处理 ,L.Data[i-1]上插入 ;第一个元素是L.last[L.last+1] if(i<1||i>PtrL->Last+2){ printf("插入位置不合理\n"); return; } for (int j = PtrL->Last;j>=i-1;j--) PtrL->Data[j+1]=PtrL->Data[j]; PtrL->Data[i-1]=X; PtrL->Last++; return; } void Delete(int i, List *PtrL){//按第i个位置处理 ,删除L.Data[i-1];最后一个元素为L.Data[L.last] if(i<1||i>PtrL->Last){ printf("删除位置不合理\n"); return; } int j; for(j=i;j<PtrL->Last;j++) PtrL->Data[j-1]=PtrL->Data[j]; PtrL->Last--; } int Length(List *PtrL){ return PtrL->Last+1; }
时间: 2024-11-05 21:40:35