顺序表

来源:互联网 发布:java 对url encode 编辑:程序博客网 时间:2024/06/06 01:16
#include <stdio.h>#include <malloc.h>#define MAXSIZE 20 typedef struct LNode *List;struct LNode{    int Data[MAXSIZE];    int Last;}; struct LNode L;List PtrL;List MakeEmpty(){    List PtrL;     PtrL=(List)malloc(sizeof(struct LNode));     PtrL->Last=-1;     return PtrL;} /*查找成功的平均比较次数为(n+1)/2,平均时间性能为O(n)*/int Find(int X,List PtrL){    int i=0;    while(i<=PtrL->Last&&PtrL->Data[i]!=X)      i++;    if(i>PtrL->Last)     return -1;    else return i;}/*平均移动次数为n/2,平均时间性能为O(n)*/void Insert(int 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--)      PtrL->Data[j+1]=PtrL->Data[j];    PtrL->Data[i-1]=X;    PtrL->Last++;    return;}/*平均移动次数(n-1).2,平均时间性能为O(n)*/void Delete(int i,List PtrL){    int j;    if(i<1||i>PtrL->Last+1){        printf("不存在第%d个元素",i);        return;     }    for(j=i;j<=PtrL->Last;j++){        PtrL->Data[j-1]=PtrL->Data[j];    }    PtrL->Last--;    return;}/*输出整个顺序表*/void ListTraverse(List PtrL){    int i;    for(i=0;i<PtrL->Last+1;i++)    {        printf("%5d",PtrL->Data[i]);    }    return;}/*int Find(int X,List PtrL){    int i;    for(i=0;i<=PtrL->Last;i++){        if(PtrL->Data[i]=X)         return i+1;    }    return 0; }*/ int main() {    List L1;    int i;     L1=MakeEmpty();     for(i=1;i<=10;i++){        Insert(i+2,i,L1);     }     ListTraverse(L1);     printf("\n");    Insert(100,2,L1);    ListTraverse(L1);    printf("\n");    Delete(3,L1);    ListTraverse(L1);    printf("\n");    int k;    k=Find(100,L1);    printf("%5d",k);    return 0; }
原创粉丝点击