入手链表

链表 动态的链接空间 头有尾空中不断

 

先说说链表的构建吧  课本上介绍的是尾插法

linklist build()
{
    linklist head,tail,q;
    int i;
    head=tail=NULL;
    for(i=1;i<=8;i+=2)
    {
        q=(linklist)malloc(sizeof(linknode));
        q->data=i+2;//?
        if(head==NULL) head=tail=q;
        else
        {
            tail->next=q;
            tail=q;
        }
    }
    if(tail!=NULL) tail->next=NULL;//这里得重视。。
    return head;
}

尾插法需要借助一个始终指向链表尾部的指针 tail

然后是常见 的插入 搜索 排序

linklist linkse(linklist head,int x)
{
    linklist q=head,z;
    z=q;
    while(q!=NULL&&q->data<=x)
    {
        z=q;
        q=q->next;
    }
    return z;
}
void linkinsert(linklist q,int x)
{
    linklist p;
    p=(linklist)malloc(sizeof(linknode));
    p->data=x;
    p->next=q->next;
    q->next=p;
}
void output(linklist head)
{
    linklist q=head;
    while(q!=NULL)
    {
        printf("%5d",q->data);
        q=q->next;
    }
    printf("\n");
}

值得一提就是编写链表的习惯问题了  每一个节点 在编写的时候都要注意是否与上下的联系上了 是否正确赋值了  在插入节点的时候 可以不用中间变量

最后贴一个排序

void linksort(linklist head)
{
    int temp;
    linklist i,j;
    i=head;
    while(i!=NULL)
    {
        j=i->next;
        while(j!=NULL)
        {
            temp=i->data;
            if(j->data >= temp)
            {
                temp=j->data;
                j->data=i->data;
                i->data=temp;
            }
            j=j->next;
        }
        i=i->next;
    }
}

posted @ 2016-06-14 11:43  猪突猛进!!!  阅读(156)  评论(0编辑  收藏  举报