链表

  链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。

  链表有一个 "头指针" 变量,它存放一个地址,该地址指向一个元素。链表中每一个元素称为 "结点" ,每一个结点都应包括两部分:用户需要用的实际数据和下一个结点的地址。可以看出,"头指针" 指向第一个元素;第一个元素指向第二个元素...知道最后一个元素,该元素不再指向其他元素,它称为 "表尾",它的地址部分放一个 "NULL"(表示"空地址"),链表到此结束。

  在静态链表中,即所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放。有 头指针 head 在定义一个 p,开始也是指向 head 的。然后在循环过程中 p = p->next 就指向了下一个结点。

  动态链表

  链表结构是动态地分配存储的,即在需要时才开辟一个结点的存储单元。

  1,malloc 函数

  void *malloc(unsigned int size);

  在内存的动态存储区中分配一个长度为 size 的连续空间,里面放的是int型的数据。此函数的值(即"返回值")是一个指向分配域起始地址的指针(类型为 void)。如果此函数未能成功地执行(例如空间不足),则返回空指针(NULL).

  2, calloc 函数

  void *calloc(unsigned n,unsigned size);

  在内存的动态存储区中分配 n 个长度为 size 的连续空间。函数返回一个指针;如果不成功返回NULL。用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size.

  3, free 函数

  void free(void *p);

  其作用是释放由 p 指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc 或 malloc 函数时返回的值。free函数无返回值。

  以前的C版本提供的malloc 和 calloc函数得到的是指向字符型数据指针。 ANSI C提供的malloc 和 calloc 函数规定为 void * 类型。

  链表的建立,输出,删除,插入

  从一个动态链表中删除一个结点,并不是真正的从内存中把它抹掉,而是把他从链表中分离开来,只要撤销原来的链接关系即可。

posted on 2011-03-27 22:00  zxl2431  阅读(382)  评论(0编辑  收藏  举报

导航