链表

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

链表的函数

待更新。。。