单链表的存储结构

typedef int ElemType;
struct LinkList {
    ElemType data;
    struct LinkList *next;
};

采用头插法建立单链表

void CreateListF(LinkList *&L,ElemType a[],int n) {
    LinkList *s;
    int i;
    L=(LinkList *)malloc(sizeof(LinkList));
    L->next=NULL;
    for(i=0; i<n; i++) {
        s=(LinkList *)malloc(sizeof(LinkList));
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }
}

采用尾插法建立单链表

void CreateListR(LinkList *&L,ElemType a[],int n) {
    LinkList *s,*r;
    int i;
    L=(LinkList *)malloc(sizeof(LinkList));
    L->next=NULL;
    r=L;
    for(i=0; i<n; i++) {
        s=(LinkList *)malloc(sizeof(LinkList));
        s->data=a[i];
        r->next=s;
        r=s;
    }
    r->next=NULL;
}

按元素值查找算法

int LocateElem(LinkList *L,ElemType e) {
    LinkList *p=L->next;
    int n=1;
    while(p!=NULL && p->data!=e) {
        p=p->next;
        n++;
    }
    if(p==NULL) return 0;
    else return n;
}