SPL 의 상용 데이터 구조 (2)
5239 단어 PHP 개발
· 데이터 구조 란 무엇 인가 -데이터 구 조 는 컴퓨터 가 데 이 터 를 저장 하고 조직 하 는 방식 이다.데이터 구 조 는 서로 한 가지 또는 여러 가지 특정한 관계 가 존재 하 는 데이터 요소 의 결합 이다. -소프트웨어 개발 과정 에서 데 이 터 를 어떻게 저장 하고 표시 하 는 지 에 대한 문 제 를 해결 합 니 다.시 나 웨 이 보 의 한 사용자 의 데 이 터 는 어떻게 저장 합 니까?예: ====》이것 이 바로 데이터 구조 웨 이 보 id 가 주목 하 는 친구 팬 들 이 보 낸 웨 이 보 개인 정 보 · SPL 은 어떤 데이터 구 조 를 제공 합 니까? -양 방향 링크, 스 택, 대기 열, 더미, 내림차 더미, 오름차 더미, 우선 순위 대기 열, 고정 배열, 대상 용기
1. 양 방향 링크
·기본 개념 노드 1, 노드 2, 노드 3. 양 방향 링크 Bottom: 링크 에 가장 먼저 추 가 된 노드 는 Bottom (아래쪽) 이 고 머리 (Head) 라 고도 합 니 다. Top: 마지막 에 링크 에 추 가 된 노드 는 Top (머리) 이 고 꼬리 라 고도 합 니 다. 링크 포인터: 현재 주목 하 는 노드 의 표지 로 임의의 노드 를 가리 킬 수 있 습 니 다. 현재 노드: 링크 포인터 가 가리 키 는 노드 를 현재 노드 · 기본 개념 이 라 고 합 니 다. 노드 1 = = 세분 화 = = 노드 이름/노드 데이터 노드 이름: 링크 에서 하나의 노드 의 이름 을 유일 하 게 표시 할 수 있 습 니 다. 우 리 는 보통 노드 의 key 또는 offset 이 라 고 부 릅 니 다. 노드 데이터: 링크 에 저 장 된 응용 데이터, 우 리 는 보통 style 이 라 고 부 릅 니 다. · SplDoubly LinkedList 류 · 작업 - 현재 노드 작업: rewind, current, next, prev - 노드 작업 추가: push, unshift - 노드 작업 삭제: pop, shift - 포 지 셔 닝 작업: bottom, top - 특정 노드 작업: offset Exists, offset Get, offset Set,offsetUnset 실례: $obj = new SplDoublyLinkedList ();/링크 의 맨 위 에 새 노드 데 이 터 를 추가 합 니 다 (top) $obj -> push ("hello"); $obj->push("2");$obj->push("3");//unshift 는 링크 아래쪽 (Bottom) $obj -> unshift ("10") 에 새로운 노드 데 이 터 를 추가 합 니 다. $obj->rewind();//rewind 작업 은 노드 포인터 가 Bottom 이 있 는 노드 를 가리 키 는 데 사 용 됩 니 다./current 는 다른 함수 가 호출 되 기 전에 호출 될 수 없 기 때문에 current 를 사용 하기 전에 rewindecho "current:". $obj -> current () 를 사용 합 니 다. ";/노드 포인터 가 가리 키 는 노드 (현재 노드) $obj -> next () 가 져 오기; $obj->next();$obj->pop();//Top 위치의 노드 를 링크 에서 삭제 하고 되 돌려 줍 니 다.current 가 상단 위 치 를 가리 키 면 pop 을 호출 하면 current 는 echo "
";
print_r($obj);
echo "
를 무효 화 합 니 다.echo "next node:".$obj->current()."";$obj->shift();//Bottom 위치의 노드 를 링크 에서 삭제 하고 되 돌려 줍 니 다.echo "";
print_r($obj);
echo "
"; ?> 2. 창고
· 마지막 으로 스 택 에 들 어간 데 이 터 를 이해 하고 돌 이 켜 보면 가장 먼저 스 택 (First In Last Out FILO) 을 꺼 냅 니 다.stack->push("a");//push 작업 은 스 택 에 노드 를 top 위치 로 넣 습 니 다 $stack -> push ("b"); $stack->push("c");$stack->push("d");echo "
";
print_r($stack);
echo "
";echo "Bottom:".$stack->bottom()."";echo "top:".$stack->top()."";$stack->offsetSet(0,'D');//스 택 의 offset = 0 은 Top 이 있 는 위치 이 고 offset = 1 은 top 위치 노드 가 bottom 에 가 까 운 인접 노드 입 니 다. 이 를 통 해 echo "";
print_r($stack);
echo "
"를 유추 합 니 다. $stack->rewind();//양 방향 링크 의 rewind 는 스 택 의 rewind 와 반대로 스 택 의 rewind 는 현재 포인터 가 top 이 있 는 위 치 를 가리 키 고 양 방향 링크 가 호출 된 후에 bottom 이 있 는 위치 echo 'current:'. $stack -> current () 를 가리 킵 니 다. "; $;stack->next();//스 택 의 Next 작업 은 포인터 로 하여 금 Bottom 위치 에 가 까 운 다음 노드 를 가리 키 게 합 니 다. 양 방향 링크 는 top 에 가 까 운 다음 노드 echo 'current:'. $stack -> current () 입 니 다. ';/스 택 $stack -> rewind () 옮 겨 다 니 기;while ($stack -> valid ()) {echo $stack -> key (). "= >". $stack -> current (). ""; $stack -> next ();//next 작업 은 링크 에서 요 소 를 삭제 하지 않 습 니 다}//스 택 데이터 삭제 $popObj = $stack -> pop ();//pop 작업 은 스 택 에서 마지막 요소 (top 위치) 를 추출 하 는 동시에 스 택 에서 이 노드 echo "Poped object:". $popObj. "를 삭제 합 니 다.echo "";
print_r($stack);
echo "
"; ?> 3. 대열
· 대기 열 과 스 택 은 정반 대 입 니 다. 가장 먼저 대기 열 에 들 어 가 는 요소 가 가장 먼저 대기 열 을 나 갑 니 다. - 줄 을 서서 밥 을 짓 는 것 처럼 맨 앞 에 있 는 사람 이 가장 먼저 밥 을 먹 을 수 있 습 니 다. ·SplDoubly LinkedList 클래스 의 SplQueue 클래스 를 계승 합 니 다. ·조작 하 다. -enqueue: 대기 열 진입 -dequeue: 대기 열 종료 실례: $queue = new Splqueue (); $queue->enqueue('a');$queue->enqueue('b');$queue->enqueue('c');echo "
";
print_r($queue);
echo "
";echo "Bottom:".$queue->bottom()."";echo "top:".$queue->top()."";$queue->offsetSet(0,"A");//대기 열 안의 offset = 0 은 Bottom 이 있 는 위치 이 고 offset = 1 은 Top 방향의 인접 노드 입 니 다. 이 를 통 해 echo "";
print_r($queue);
echo "
"를 유추 합 니 다. $queue->rewind();//대기 열 안의 rewind 작업 은 포인터 가 bottom 이 있 는 위치 에 있 는 노드 echo 'current:'. $quue -> current () 를 가리 키 게 합 니 다. "echo "";
print_r($queue);
echo "
";//대기 열 $queue -> rewind () 옮 겨 다 니 기;while ($quue -> valid ()) {echo $quue -> key (). "= >". $quue -> current (). ""; $quue -> next ();//next 작업 은 링크 에서 요 소 를 삭제 하지 않 습 니 다}//대기 열 데이터 삭제 $Obj = $quue -> dequeue ();//pop 작업 은 스 택 에서 마지막 요소 (top 위치) 를 추출 하 는 동시에 스 택 에서 이 노드 echo "Poped object:". $Obj. "를 삭제 합 니 다.echo "";
print_r($queue);
echo "
"; ?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PHP-composer 패키지 게시(안정적인 버전)1. 프로젝트push를github로 보내기;composer를 작성합니다.json, 다음: 2.https://packagist.org/submit 검사를 하고 자신의composer를 개선합니다.json 의존 3. gi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.