一般我们对于链表来说我们以结构体的形式进行更新和表述,通常链表的使用十分的复杂,所以对于一般的链表我们要注意他的内存处理和操作问题,简单的谈一下我的理解
1.在c++和c语言中我们进行简化变量的操作是:
typedef struct node
{
int date//记录每一个值
node *ne;
}node;
2.在C语言中我们给指针分配链表的形式有:
*malloc(unsigned int size)//随机分配
*calloc(unsigned int n,unsigned int size)//类同
*realloc(void*p_block,unsigned int size)//重新分配
3.我们建造列表的形式是以吃串串的方式进行建造的,例如下图部分:
头结点的是位于开头的部分,起到一个小旗子的作用,他的作用是引领着 整个数组,后面依次进行date的数据储存和ne数组进行指向,可以说ne是整个数组的灵魂他串联着前后
4.逆序建造列表
node *head,*p;//逆序建造列表比较直接,但是操作是简单的
head=(node*)malloc(sizeof(node));//给head开辟空间,head指的是头节点
head->ne=NULL;
//—————————————————————————————————————————————————————————————————————————————————————————
p=(node*)malloc(sizeof(node));
scanf("%d",&p->Date);
p->ne=head->ne;
head->ne=p;
序号代表步骤;
5.顺序建造列表
node *head,*tail,*p;
head=(node*)malloc(sizeof(node));
head->ne=NULL;
tail=(node*)malloc(sizeof(node));
tail=head;
//__________________________________________________________________
p=(node*)malloc(sizeof(node));
scanf("%d",&p->date);
tail->next=p;
tail=p;
顺序是开了三个位置:头,尾,和一个游动的指针。我们通过三个保证了头的不变,尾部的后移,可以侧面的看成尾结点的逆向。