用数组实现链表

来源:互联网 发布:python 数据可视化js 编辑:程序博客网 时间:2024/06/07 01:20
/*
 ============================================================================
 Name        : Test.c
 Author      :
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

typedef struct alist *List;
typedef struct alist {
    int n;
    int maxsize;
    ListItem *table;


}List;
struct listItem{
     char name[10];
     double price;
    }ListItem;

    List ListInit(int size);
    int ListEmpty(List L);
    int ListLength(List L);
    int ListLocate(ListItem x,List L);
    ListItem ListRetrieve(int k,List L);
    void ListInsert(int k,ListItem x,List L );

    ListItem ListDelete(int k,List L);


int main(void) {


    return 0;
}
List ListInit(int size){
   List L=mallloc(sizeof( *L));
   L->table=malloc(size* sizeof(ListItem));
   L->maxsize=size;
   L->n=0;
   return L;

}

int ListEmpty(List L){
    return L->n==0;
}
int ListLength(List L){
    return L->n;
}

int ListLocate(ListItem x,List L){
    int i;
    for(i=0;i<L->n;i++)
        if(L->table[i]==x)
            return ++i;
    return 0;



}

ListItem ListRetrieve(int k,List L){
    if(k<1 || k>L->n)
        Error("out of bounds");
    return L->table[k-1];
}

void ListInsert(int k,ListItem x,List L ){
    int i;
    if(k<0 || k>L->n)
        Error("out of bounds");
    if(L->n==L->maxsize)
        Error("out of memory");
    for(i=L->n-1;i>=k;i--)
        L->table[i+1]=L->table[i];
    L->table[k]=x;
    L->n++;

}

ListItem ListDelete(int k,List L){
    int i;
    ListItem x;
    if(k<1 || k>L->n)Error("out of bounds");
    x=L->table[k-1];
    for( i=k;i<L->n;i++) L->table[i-1]=L->table[i];
    L->n--;
    return x;
}






0 0
原创粉丝点击