首页 > 其他 > 详细

入手链表

时间:2016-06-14 13:40:56      阅读:154      评论:0      收藏:0      [点我收藏+]

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

 

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

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;
    }
}

入手链表

原文:http://www.cnblogs.com/z1141000271/p/5583523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!