链表是一种不连续的线性表,在内存中表现为1:1的联系方式。
链表是由一个个节点组成的,节点分为两部分:一部分是数据区域,一部分是指针域。
记住实现链表有两个步骤:
1.分配空间
2.产生联系(每个节点的指针指向下一个节点)
1.尾插法:每次将新来的空间放入到尾节点之后,头节点保持不变
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
struct nd;
struct student;
typedef struct student dtype;
typedef struct nd node;
typedef struct nd* pnode;
struct student
{
char name[10];
int id;
};
struct nd
{
dtype data;
pnode next;
};
bool insert(pnode* pph,dtype data)
{
pnode pnew=malloc(sizeof(note));
if(NULL==pnew)
return false;
pnew->data=data;
pnew->next=NULL;
if(*pph==NULL)
*pph=pnew;
else
{
pnode prear=*pph;
while(prear->next!=NULL)prear=prear->next;
prear->next=pnew;
}
return true;
}
头插法:每次将新空间放到头节点之前,生成新的头结点。
bool insert(node** pph,dtype data)
{
node* pnew=malloc(sizeof(node));
if(pnew==NULL)
return false;
pnew->data=data;
pnew->next=*pph;
*pph=pnew;
return true;
}