일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- non conventional NFR
- Firebase
- jenkins
- endless scrolling
- meta threads
- 객치지향프로그래밍
- 쓰레드 이미지 다운로드
- 젠킨스
- 직장영어
- Android
- 쓰레드 비디오 다운로드
- 영어회화
- cloud firestore
- 라이브아카데미
- firestore
- conventional NFR
- 파이썬
- RecyclerView
- 특수기호
- 자료구조
- 특수문자
- 메타 쓰레드
- 이모티콘
- git
- re-engineering
- 안드로이드
- Python
- skeleton architecture
- Realtime Database
- django
Archives
- Today
- Total
Owl Life
덱(deque) 자료구조 본문
반응형
Double Linked List 소스코드입니다.
#include "iostream" using namespace std; #define MAX_NODE 1000 #define INIT_DATA -1 typedef int T; typedef struct _node { T data; struct _node *prev, *next; } NODE; NODE node_list[MAX_NODE + 1]; int node_idx; NODE *head; int node_count; NODE *alloc_node() { NODE *new_node = &node_list[node_idx++]; new_node->prev = new_node->next = 0; return new_node; } void init() { node_idx = 0; node_count = 0; head = new NODE(); head->data = INIT_DATA; head->prev = head->next = head; } void push_next(NODE *node, T data) { NODE *next = node; NODE *before = node->prev; NODE *new_node = alloc_node(); new_node->data = data; new_node->next = next; new_node->prev = before; before->next = new_node; next->prev = new_node; node_count++; } T remove_node(NODE *node) { NODE *before = node->prev; NODE *after = node->next; T result = node->data; node->next = node->prev = 0; before->next = after; after->prev = before; node_count--; return result; } void push_front(T data) { push_next(head->next, data); } void push_last(T data) { push_next(head, data); } T pop_front() { if (head == 0 || node_count == 0) { cout << "No data to pop front." << endl; return 0; } return remove_node(head->next); } T pop_last() { if (head == 0 || node_count == 0) { cout << "No data to pop front." << endl; return 0; } return remove_node(head->prev); } void disp() { if (node_count == 0) { cout << "no data to display" << endl; return; } NODE *cur = head->next; for (int i = 0; i < node_count; i++) { cout << cur->data << " "; cur = cur->next; } cout << endl; } int main() { init(); push_front(1); push_front(2); push_front(3); push_last(100); disp(); return 0; }
반응형
'자료구조_알고리즘' 카테고리의 다른 글
자료구조_Double Linked List (DLL) (0) | 2018.05.11 |
---|---|
자료구조_Binary Search Tree (BST) (0) | 2018.05.11 |
Comments