C++的链表是什么
链表是什么,节点又是什么
链表是什么,节点又是什么
答案:链表的定义:链表和数组是程序语言中使用内存常用的方法,两者都为“顺序表”,就像火车一样,一个车厢接着一个车厢有顺序的连在一起。但数组结构必须在程序编译前就定好数组元素的大小,因此常须事先预估数据量的多少,且在删除或增加元素后,在其之后的元素都必须跟着移动,降低了执行的效率;链表结构正好可以完全改善数组结构的缺点,其主要的不同点在于内存位置必须相邻,所以每一项数据都有一个链接字段,可以存放下一个数据的地址,如此便可形成表结构。
基本链表的建立
以上所述的部分只建立了动态数据结构的一个结点,如果我们建立了许多的结点,以火车车厢的线性方式将它串联,则此类的数据结构就称为链表,其执行算法如下:
struct list
{
int num;
char name[24];
struct list *next;
};
typedef struct list node;
typedef node *link;
link create_list()
{
link head;
link ptr;
int i;
head = (link)malloc(sizeof(node));
if(!head)
{
printf(“内存分配失败!\n”);
exit(1);
}
head->next = NULL;
ptr = head;
printf(“输入n个数据”);
for(i=0;i<n;i++)
{
printf(“输入n个数据编号à”);
scanf(“%d”,&ptr->num);
printf(“输入编号%d数据内容à”,ptr->num);
scanf(“%s”,ptr->name);
ptr->next = (link)malloc(sizeof(node));
if(!ptr->next)
{
printf(“内存分配失败!”\n);
exit(1);
}
ptr->next->next = NULL;
ptr = ptr->next;
}
}
假设我们输入了n个结点的数据,而系统却分配了n + 1个结点的内存空间。这是因为上述程序并没有对结构中的第一个结点单独处理,使malloc( )函数执行了n+1次的原因。我们须注意的是,链表结构的第一结点就是链表操作的特例,必须特别注意它和处理其余结点的差异。
链表就是一串链接起来的结点
结点是组成链表的基本元素。
想象一下一串佛珠吧。
一串佛珠就是一个链表,而里面的每一个珠子,就是链表的一个结点。
链表是一种数据结构,主要用来动态放置数据。
上一个:数据结构算法设计C++实现
下一个:求C++动态链表讲解