#include<stdio.h> #include<stdlib.h> Typedef int ElemenType; List MakeEmpty() { List PtrL; PtrL = (List)malloc(sizeof(struct LNode)); Ptrl->Last = -1; return PtrL; } int Find(ElemenType X,List PtrL)//查找X { int i = 0; while(i<PtrL->Last&&PtrL->Data[i]!=X) i++; if(i>PtrL->Last) return -1; else return i; } void Insert(ElemenType X,int i,List PtrL) { int j; if(PtrL->Last == MAXSIZE-1)//检查表是否满了 { printf("表满"); return; } if(i<1||i>Ptrl->Last+2)//检查位置 { printf("位置不合法"); return; } for(j=PtrL->last;j>=i-1;j--)//平均移动次数为n/2,平均时间性能为O(n) { PtrL->Data[j+1]=PtrL->Data[j];//向后移动 PtrL->Data[i-1]=X;//插入新元素 PtrL->Last++;//Last指向最后元素 return; } } void Delete(int i,List PtrL)//平均移动次数为(n-1)/2,平均时间性能为O(n) { int j; if(i<1||i>PtrL->Last+1)//检查是否空表 { printf("不存在第%d个元素",i); return; } for(j=i;j<=PtrL->Last;j++) { PtrL->Data[j]=Ptrl->Data[j+1];//向前移动 PtrL->Last--;//Last指向最后元素 return; } }
插入和删除,移动方式是相反的。
浙公网安备 33010602011771号