먼저 연결 목록이 무엇인지 이해합시다.
평신도의 용어로 링크드리스트는 일종의 체인 저장 구조입니다. 추상적으로 이해할 수 있고 철 체인으로 상상할 수 있습니다. 철 체인은 철 고리와 연동 링크로 구성되어 있지 않습니다! 그러면 각 후프를 하나라고 부를 수 있습니다 节点
. 각 후프 에 두 개의 작은 상자를 부착하면 두 개의 작은 상자 중 하나 数据域
를 각 노드의 데이터가 저장되는 장소 라고 하고 다른 하나를 다음 이라고 指针域
합니다 . 노드 ( 铁环
) 주소 의 위치입니다 . 그렇게 말하는 것은 다소 추상적 일 수 있습니다. 위의 그림을보세요.
연결 목록의 노드는 다음과 같습니다. 아래에서 여러 노드를 연결하여 연결 목록을 만듭니다!
각 노드의 주소를 A, B, C로 설정했습니다. 첫 번째 노드의 포인터 필드는 두 번째 노드의 주소 B를 저장하고 두 번째 노드의 포인터 필드는 세 번째 노드의 주소를 저장합니다. 이런 식으로 각 노드가 하나로 합쳐지는 가장 단순한 연결 목록, 단일 연결 목록입니다.
코드 구현을 살펴 보겠습니다.
먼저 노드 표현을 살펴 보겠습니다 .
typedef struct lianbiao
{
int date;//数据域
struct lianbiao *pnext;//地址域
}link;
그런 다음 우리가해야 할 일은 후프처럼 연결하고 코드를 추가하는 것입니다.
#include <stdio.h>
#include <stdlib.h>
typedef struct lianbiao
{
int date;
struct lianbiao *pnext;
}link;
link *pnew;//新节点
link *phead;//头节点
link *ptemp;//临时节点
int count=1;
void creat(void);
void add(void);
int main()
{
int n,i;
printf("请输入所需要创建的链表长度,不可为0\n");
scanf("%d", &n);
creat();
for(i=0;i<n-1;i++)
{
add();
}
printf("链表创建完毕,输出链表所有数据\n");
//printf("%d ", phead->date);
for(ptemp=phead;ptemp!=NULL;ptemp=ptemp->pnext)
{
printf("%d ", ptemp->date);
}
return 0;
}
void creat(void)//创建头节点
{
phead=(link*)malloc(sizeof(link));
phead->pnext=NULL;
phead->date=0;
//memset(link,0,sizeof(link));
}
void add(void)//添加节点
{
pnew=(link*)malloc(sizeof(link));
pnew->date=count;
pnew->pnext=0;
ptemp=phead;
while(ptemp->pnext!=NULL)
{
ptemp=ptemp->pnext;
}
ptemp->pnext=pnew;
//pnew=NULL;
count++;
}
운영 결과 :
궁금한 점이 있으시면 댓글란에 글을 남겨 주시거나 비공개로 남겨주세요! 귀하의 검토에 감사 드리며 수정 및 전달을 환영합니다.