我想要建立一个链表,能够动态加入一些数据,并且按索引找到数据。发现比用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++;
}
}
} |