2005-d-二

//链表节点
typedef struct LNode
{
    int data;//节点值
    struct LNode *next;//指向下一个节点
} LNode;
//哈希节点
typedef struct HNode
{
    LNode *first;//链接的第一个指针域
} HNode;
//哈希表
typedef struct HashTable
{
    HNode list[N];
}HashTable;

int seadel( HashTable *H,int k)
{
    int pos=H(k);
    LNode *p,*r;
    p=H->list[pos]->first;
    //判断第一个结点是否是
    if(p->data==k)
    {
        H->list[pos]->first=p->next;
        free(p);
    }
    r=p;
    p=p->next;
    //第一个不是
    while(p!=NULL)
    {
        if(p->data==k)
        {
            r->next=p->next;
            free(p);
            return 1;
        }else{
            r=p;
            p=p->next;
        }
    }
    return 0;
}