알고리즘

[알고리즘] 배열과 연결리스트

2022. 5. 21. 10:39
목차
  1. 배열 
  2. 연결 리스트

배열 

; 같은 타입의 변수들로 이루어진 유한 집합

- 가장 기본적인 자료구조로, 논리적 저장 순서와 물리적 저장 순서가 일치

- 삽입과 삭제 시 시간 복잡도 o(N)

- 배열 요소(배열을 구성하는 각각의 값), 인덱스(위치를 가리키는 숫자)로 구성

 

더보기

1차원 배열

int main() {
	int arr[3] ={10,20,30};
	for(int i=0;i<3;i++){
		printf("%d %p\n",arr[i],&arr[i]);	 //arr[i]는 arr[i]의 값,  &arr[i]는 arr[i]의 주소 값 
	}
	int *p=arr;				//포인터형 변수 p는 arr를 가리킴 
	for(int i=0;i<3;i++){
		printf("%d %p\n",*(p+i),p+i)		//*(p+i) = arr[i], p+i = &arr[i] 
	}
	return 0;
}

2차원 배열

int main() {
	int arr[3][2]={{1,2},{3,4},{5,6}};
	for(int i=0;i<3;i++){
		for(int j=0;j<2;j++){
			printf("%d %p\n",arr[i][j],&arr[i][j]);
		}
	}
	int *p=arr[0]; // = &arr[0][0]과 동일한 식(배열의 첫번째 요소의 주소값 = 배열의 값)
	int *p2=&arr[0][0];
	for(int i=0;i<3;i++){
		for(int j=0;j<2;j++){
			printf("%d %p\n",*(p++),p2++);
		}
	} 
	return 0;
}

3차원 배열

int main() {
	int arr[3][2][2]={{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}};
	for(int i=0;i<3;i++){
		for(int j=0;j<2;j++){
			for(int l=0;l<2;l++){
				printf("%d %p\n",arr[i][j][l],&arr[i][j][l]);
			}
		}
	}
	int *p=arr[0][0]; 
	int *p2=&arr[0][0][0];
	for(int i=0;i<3;i++){
		for(int j=0;j<2;j++){
			for(int l=0;l<2;l++){
				printf("%d %p\n",*(p++),p2++);
			}
		}
	} 
	return 0;
}

 

연결 리스트

; 자기 자신 다음에 어떤 원소인지만을 기억하고 있음

- 배열의 문제점을 해결하기 위한 자료구조

- 삽입과 삭제 시 시간 복잡도 O(1)

- 논리적 저장 순서와 물리적 저장 순서가 일치하지 않기에 원하는 위치를 탐색할 경우, 첫번째 원소부터 다 확인해봐야 함

-> 시간 복잡도 O(n)

- Tree의 근간이 되는 자료구조

 

저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[알고리즘] 해싱(자료구조 기말고사 공부 정리)  (0) 2022.05.30
[알고리즘] 탐색  (0) 2022.05.29
[알고리즘] 그래프  (0) 2022.05.22
[알고리즘] 연결 리스트  (0) 2022.05.21
[알고리즘] 정렬(삽입 정렬, 버블 정렬, 선택 정렬, 퀵 정렬)  (0) 2022.05.16
[알고리즘] 자료구조란 ?  (0) 2022.05.15
[알고리즘] 알고리즘이란 ? / 알고리즘의 종류  (0) 2022.05.14
[알고리즘] 백트래킹 알고리즘  (0) 2022.04.19
  1. 배열 
  2. 연결 리스트
'알고리즘' 카테고리의 다른 글
  • [알고리즘] 그래프
  • [알고리즘] 연결 리스트
  • [알고리즘] 정렬(삽입 정렬, 버블 정렬, 선택 정렬, 퀵 정렬)
  • [알고리즘] 자료구조란 ?
피터s
피터s
1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터s
피터의 성장기록
피터s
전체
오늘
어제
  • 분류 전체보기 (200)
    • 코딩 테스트 (25)
      • 프로그래머스 (16)
      • LeetCode (8)
      • 백준 (1)
    • 개발 독서 일지 (1)
    • 기업 분석 (4)
    • 개발 일지 (19)
      • 최신기술 도전기 (1)
      • 에러 처리 (5)
      • 개발 일지 (12)
    • 개발 일상 (36)
      • 개발 회고 (22)
      • 개발 이야기 (12)
      • 개발 서적 (1)
    • 취업 관련 지식 (11)
    • 알고리즘 (17)
    • WebProgramming (84)
      • WebProgramming (8)
      • HTML (5)
      • CSS (8)
      • JS (21)
      • React (40)

블로그 메뉴

  • About
  • 2022년 개발 성장기
  • 앞으로의 계획
  • github
  • 일상 blog

공지사항

인기 글

태그

  • KAKAO BLIND
  • 개발 is life
  • 1년 회고
  • 구름톤
  • 카카오 채용연계형 인턴십
  • LV2
  • Retry
  • 개발 일상
  • Union-find
  • 개발 회고
  • lv3
  • Kakao Tech Internship
  • 1일 1커밋 후기
  • 구름
  • 스터디 후기
  • 반복문
  • 카카오
  • 해커톤
  • 함수
  • BFS
  • 누적합
  • dfs

최근 댓글

최근 글

hELLO · Designed By 정상우.
피터s
[알고리즘] 배열과 연결리스트
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.