데이터 구조 - 스 택 (배열 설명)
11960 단어 데이터 구조창고.진 변환배열 설명창고 에 넣 고 출고 하 다.
1. 스 택 은 선형 표 의 삽입 과 삭제 작업 을 같은 끝 에 놓 고 진행 하면 스 택 데이터 구 조 를 얻 을 수 있 습 니 다. 이것 은 후진 선 출 (last in first out) 의 데이터 구조 입 니 다.스 택 은 특수 한 선형 표 로 삽입 (스 택/스 택) 과 삭제 (스 택/스 택) 작업 은 모두 표 의 같은 끝 에서 진행 된다.이 한쪽 은 창고 지붕 이 라 고 하고, 다른 한쪽 은 창고 바닥 이 라 고 한다.프린터 트 레이 의 인쇄 지 사용 상황 은 스 택 작업 으로 볼 수 있다.스 택 의 배열 설명 에 대한 추상 적 인 데이터 형식 은 다음 과 같 습 니 다.
class Stack
{ public:
Stack(int size); // , ,
char pop(); //
void push(char e); // , ,
void empty() //
char* stack; // ,
private:
int size; //
int top; //
};
배열 을 이용 하여 스 택 에 대해 설명 합 니 다. 이런 추상 적 인 데이터 유형 은 기본 적 인 스 택 초기 화, 스 택 입, 스 택 출 등 작업 과 스 택 지붕, 스 택 의 크기 표 시 를 포함 합 니 다.데이터 보호 로 인해 스 택 과 스 택 의 크기 를 private 변수 로 정의 합 니 다. 이 변수 가 필요 하 다 면 Public 함수 gettop () 함 수 를 추가 하여 스 택 으로 돌아 갈 수 있 습 니 다.
2. 인 스 턴 스 스 택 의 작업 에서 가장 중요 한 것 은 스 택 에 들 어가 고 스 택 을 나 가 는 작업 입 니 다.다음은 실례 를 들 어 설명 하 겠 습 니 다.1. 이것 은 간단 한 스 택 의 설립, 입 스 택 과 출 스 택 의 예 입 니 다.이 예 를 통 해 스 택 의 배열 설명 형식 을 익 힙 니 다./스 택 의 배열 설명, (스 택 에 들 어가 고 스 택 을 나 가 며 동적 으로 스 택 의 길 이 를 증가 합 니 다)
#include<iostream>
#include<cmath>
using namespace std;
class Stack
{
public:
Stack(int initialCapacity=10) //
{
size=initialCapacity;
stack= new char[size];
top=-1;
}
void push(char element); //
// char pop(char* element); // ,
/*char Stack::pop(char* element) { element=&stack[top--]; return *element; } */
char pop() //
{
if(top==-1)
{
cout<<" !"<<endl;
exit(0);
}
return stack[top--];
}
int top; //
int size; //
char* stack; //
};
//
void Stack::push(char element)
{
if(top==size-1)
{
size*=2;
char* p=new char[size];
for(int i=0;i<=top;i++)
p[i]=stack[i];
delete[] stack;
stack=p;
}
stack[++top]=element;
}
int main()
{
Stack stack;
for(int i=0;i<stack.size;i++) //10
stack.push('a'+i);
for( i=0;i<20;i++) //20 , 。 i
cout<<stack.pop()<<endl;
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
class Stack
{
public:
Stack(int size) // , ,
{
this->size=size; // size, this
stack=new char[this->size];
top=-1;
}
char pop() //
{
if(top==-1)
{
cout<<" !"<<endl;
exit(0);
}
return stack[top--];
}
void push(char e) // , ,
{
if(top==size-1)
{
size=size+10;
char*p=new char[size];
for(int i=0;i<size;i++)
p[i]=stack[i];
delete[] stack;
stack=p;
}
stack[++top]=e;
}
private:
int size; //
int top; //
char* stack; // ,
};
int main()
{
Stack s(5); // , 5,
int o[20]; //
char binary[100]; //
cout<<"Please input the binary number:"<<" ";
cin>>binary;
// cout<<binary;
//**************
int len=strlen(binary); //
// cout<<len<<endl;
for(int i=0;i<len;i++) // , 0
s.push(binary[i]);
int sum=0;
for( i=0;i<len;i++) //
sum=sum+int(s.pop()-'0')*pow(2,i);
cout<<"The decimal number is: "<<sum<<endl;
for( i=0;i<len;i++) // ,
s.push(binary[i]);
//*************
int k=0; //
for( i=0;i<len;) //
{
int temp=0;
for(int j=0;j<3&&i<len;j++)
{
temp=temp+int(s.pop()-'0')*pow(2,j);
i++;
}
//cout<<temp<<endl;
o[k++]=temp; //
}
cout<<"The octal number is: ";
for(i=k-1;i>=0;i--) //
cout<<o[i];
cout<<endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.