打印

链表问题

[复制链接]
1156|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-10-29 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想要建立一个链表,能够动态加入一些数据,并且按索引找到数据。发现比用vector慢很多。不知道是否有什么好的方法,可以提高C语言的效率。
struct Point3D
{
    double x, y, z;
    int attr;
    struct Point3D *next;
};

//加入点。
void InsertPoint2End( Point3D * &pHead, Point3D * &pInsert)//从链表表尾插入一个元素。要用指针的引用或者二级指针来改变指针的值。
{
    //p0用来指向插入的节点,p1移到需要插入的位置,p2移到需要插入的前一个位置。
    Point3D *p1;
    p1 = pHead;
    if (pHead == NULL)
    {
        pHead = pInsert;
        //pInsert->next = NULL; 因为pInsert->已被初始化为NULL,所以无需再写这句。
    }
    else
    {
        while ( p1->next != NULL ) //把指针移动到尾端。
        {
            p1 = p1->next;
        }
        p1->next = pInsert;
        //pInsert->next = NULL; 因为pInsert->已被初始化为NULL,所以无需再写这句。
    }
}
//按索引找到需要的点。
Point3D * GetListPoint(Point3D *pHead, int &index)
{
    Point3D* p1;
    p1 = pHead;

    int i = 0;
    while ( 1 )
    {
        if ( i == index )
        {
            return p1;
        }
        else
        {
            p1 = p1->next;
            i++;
        }
    }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝