문제

JavaScript에서 스택을 구현하고 있습니다.

고려하다:

Stack{0,1,2,3} Top:0

이제 사용자는 2의 값을 나타냅니다.

Stack{0,1,3} Top:0

이것은 스택에 대한 허용되는 행동입니까? 나는 내 자신의 스택을 굴리고 있지만, 나에게 이것을 할 내장 된 코드가 있습니까?

내 코드 :

function Stack() //Creating Stack Object
{
    // Create an empty array of cards.
    this.cards = new Array();  //Cards array inside stack object
    this.push  = pushdata;     //Call pushdata function on push operation
    this.pop   = popdata;      //Call popdata function on pop operation
    this.printStack = showStackData; //Call showStackData function on printstack operation
}

function pushdata(data)
{
    this.cards.push(data);
}

function popdata(data)
{
    return this.cards.pop();
}

function showStackData()
{
    return this.cards;
}

var a = new Stack(); //Create stack Object
a.push(12);          //Push Data onto Stack
a.push(32);
a.push(42);
var z = a.pop();
document.write("Data Popped: " + z);
document.write("Stack Output: " + a.printStack());

스택 이이 애플리케이션의 올바른 유형의 데이터 구조가 아닌 경우 올바른 방법은 무엇입니까?

도움이 되었습니까?

해결책

스택에서 위의 작업을 합법적으로하는 것이 합법적입니까?

그것은 전통적인 스택 작업이 아닙니다. 그렇게 할 수있는 데이터 구조는 실제로 스택이라고 할 수 없었습니다. 그것은 더 평범한 오래된 목록에 가깝습니다.

스택이 상단과 시작 사이의 데이터를 제거하는 것이 허용되지 않으면 위의 논리에 대해 JavaScript에서 사용되는 Alter 데이터 구조는 무엇입니까?

단순한 문제가 있습니까? 정렬? 그것은 당신이 원하는 무작위 액세스 항목을 제공합니다.

var a= [0, 1, 2, 3];
a.splice(1, 1);
// a==[0, 2, 3]

또한 전면로드 및 테일 스택 (및 결과적으로 대기열)에 액세스하기위한 스택 스타일 편의 방법 : 푸시/팝/시프트/교대.

Array ()가 이미 IMO를 덮을 때 자신만의 스택 () 래퍼 클래스를 만드는 점이 많지 않습니다. 컴퓨터 과학자는 스택에 대한 링크 된 목록의 알고리즘 복잡성과 같은 것들에 관심이있을 수 있지만 실제로는 고급 코드의 최신 JavaScript 통역사에 내장 된 최적화 된 배열 구현을 개선 할 수 없습니다.

다른 팁

팝으로 할 수 없습니다 (길을 따라 다른 물건을 터뜨리지 않고). 사용자가 숫자 2가있는 위치를 찾을 수있는 다른 방법과 배열 스플 라이스 사용과 같은 다른 방법을 찾을 수있는 다른 방법을 제공해야합니다. 그러나 그때까지 이것은 더 이상 스택이 아닙니다.

http://www.w3schools.com/jsref/jsref_splice.asp

실제로 스택을 사용해야한다면 여러 번 팝업하고 팝 된 데이터를 다른 스택에 푸시하여 일시적으로 저장할 수 있습니다. 그런 다음 완료되면 스택의 끝을 다시 제자리에두기 위해 반대를 수행하십시오.

이와 같은 것은 일반적으로 GUI 애플리케이션에서 실행 취소/레디 작업으로 수행됩니다. 실행 취소 작업 스택과 반대되는 재정의 스택이 있습니다. UNDO UNDO는 액션을 스택 A에서 B로 이동시키고 Redo는 스택 B에서 A로 액션을 이동합니다. 새로운 동작은 실행 취소 스택으로 밀고 다시 Redo 스택을 닦아냅니다.

이것이 사용되는 또 다른 장소는 브라우저의 후면/전방 목록에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top