当前位置:编程学习 > C/C++ >>

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++动态链表讲解

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,