链表
why链表
如果创建一个结构,用malloc直接向内存申请一大片空间,那么为了实现数组的“扩大”,我们只能创建新的结构(一个更大的,加上增加空间的结构),如果内存不够上一次申请的内存的两倍,就会报错,很明显,这样的方法的空间利用率还不够高,因此,我们可以单独存储每一个数据以及数据间的关系(指针),也就可以使用链式存储,即链表
用链表实现可变数组
下面是原课件的程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include "node.h" #include <stdio.h> #include <stdlib.h> int main() { Node* head=NULL; int number; do{ scanf("%d",&number); if(number!=-1){ Node *p=(Node*)malloc(sizeof(Node)); p->value=number; p->next=NULL; Node *last=head; if(last){ while(last->next){ last=last->next; } last->next=p; }else{ head=p; } } }while(number!=-1); return 0; }
|
node. h :
1 2 3 4 5 6 7
| #ifndef _NODE_H_ #define _NODE_H_ typedef struct _node{ int value; struct _node *next; }Node; #endif
|
链表的函数
待更新。。。