(새 문서: ==개요== ;C언어 연결 리스트 구현 2 <source lang='c'> #include <stdio.h> #include <stdlib.h> // 노드 타입 정의 typedef struct NodeStruct { int value; struct NodeSt...) |
|||
101번째 줄: | 101번째 줄: | ||
==같이 보기== | ==같이 보기== | ||
* [[C언어 연결 리스트 구현]] | * [[C언어 연결 리스트 구현]] | ||
[[분류: C]][[분류: 연결 리스트]] |
2019년 10월 29일 (화) 00:35 판
1 개요
- C언어 연결 리스트 구현 2
C
Copy
#include <stdio.h>
#include <stdlib.h>
// 노드 타입 정의
typedef struct NodeStruct {
int value;
struct NodeStruct *next;
} Node;
Node* head = NULL;
Node* createNode(int value) {
Node* p = malloc(sizeof(Node));
p->value = value;
p->next = NULL;
return p;
}
// 노드 삭제
void unsetNode(Node* node) {
free(node);
node = NULL;
}
// 노드 추가
void append(Node* node) {
if( head == NULL ) {
head = node;
return;
}
Node* p = head;
while( p->next != NULL ) p = p->next;
p->next = node;
}
// 선택 위치에 노드 추가
void insertAt(int index, Node* newNode) {
if( index == 0 ) {
newNode->next = head;
head = newNode;
return;
}
Node* p = head;
for(int i=0; i<index-1; i++) p = p->next;
newNode->next = p->next;
p->next = newNode;
}
// 선택 위치에 노드 추가
void deleteAt(int index) {
if( index == 0 ) {
Node* u = head;
head = head->next;
unsetNode(u);
return;
}
Node* p = head;
for(int i=0; i<index-1; i++) p = p->next;
Node* u = p->next;
p->next = p->next->next;
unsetNode(u);
}
// 노드 출력
void printList() {
Node* p = head;
while(p != NULL) {
printf("%d ", p->value);
p = p->next;
}
printf("\n");
}
int main() {
append(createNode(1));
append(createNode(2));
append(createNode(3));
append(createNode(4));
printList();
insertAt(0, createNode(8));
printList();
insertAt(3, createNode(9));
printList();
deleteAt(0);
printList();
deleteAt(2);
printList();
}
// 1 2 3 4
// 8 1 2 3 4
// 8 1 2 9 3 4
// 1 2 9 3 4
// 1 2 3 4
2 같이 보기
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.
- 분류 댓글:
- C (7)
- 연결 리스트 (3)
C, C++ 주석 ― YkhwongC, C++ 주석 ― John JeongC, C++ 주석 ― JmnoteC, C++ 주석 ― John JeongC언어 연결리스트 구현 ― 돌멩이C언어 연결리스트 구현 ― John JeongC언어 연결리스트 구현 ― 돌멩이