티스토리 뷰
#include<stdio.h> #include<stdlib.h> //malloc 함수가 들어있는 헤더파일
typedef struct node{ int data; struct node* link; //다음 데이터를 담을 링크 포인터 변수 }Node; Node* CreateNode(int num){ Node *p; p=(Node*)malloc(sizeof(Node)); //새로운 노드를 메모리 할당함. p->data=num; //새로운 노드의 데이터를 파라미터에 주어진 값으로 함. p->link=NULL; //새로운 노드의 링크를 NULL로 할당 return p; //새로운 노드의 주소 리턴 } int main(void) { Node *p, *head; //연결 리스트의 첫번째 노드인 head 변수와 접근을 위한 p 포인터 변수 head=p=CreateNode(10); //새로운 노드를 만든다. 첫 노드의 값은 10 p->link=CreateNode(20); //두번째 노드를 만든다. 두번째 노드 값 20 p=p->link; //현재 접근 위치를 링크. 현재 2번째 노드 접근중 p->link=CreateNode(30); //세번째 노드를 만든다. 세번째 노드 값 30 p=p->link; //현재 접근 위치를 링크. 현재 3번째 노드 접근중 p->link=CreateNode(40); //네번째 노드를 만든다. 네번째 노드 값 40 p=p->link; //현재 접근 위치를 링크. 현재 4번째 노드 접근중 p->link=CreateNode(50); //다섯번째 노드를 만든다. 다섯번째 노드 값 50 for(p=head;p!=NULL;p=p->link) //현재 다섯번째 노드의 link는 NULL임. 고로 50까지 출력. printf("%d\t",p->data); //현재 노드의 데이터 접근 }
단순 연결 리스트(링크드 리스트)이다.
단순 연결 리스트는 데이터들이 링크를 통해 연결되어있는 구조를 가진 자료구조이다.
각 노드들은 데이터와 링크를 가지고 있다.
10 > 20 > 30 > 40 > 50 > NULL
이 연결 리스트에서 데이터 10의 링크에는 20의 주소가 담겨있고, 20의 링크에는 30의 주소가 담겨있다.
'Today I learned > 자료구조' 카테고리의 다른 글
트리(Tree) (0) | 2017.10.11 |
---|---|
단순 연결 리스트(2, 역순 연산) (0) | 2017.09.20 |