제3 장 창고 와 대열
5054 단어 데이터 구조대학원 에 진학 하 다
//
typedef struct
{
int data[maxSize]; // ,maxSize
int top; //
}SqStack; //
//
typedef struct LNode
{
int data; //
struct LNode *next; //
}LNode; //
//
typedef struct
{
int data[maxSize];
int front; //
int rear; //
}SqQueue; //
//
//
typedef struct QNode
{
int data; //
struct QNode *next; //
}QNode; //
typedef struct
{
QNode *front; //
QNode *rear; //
}LiQueue; //
2. 순서 스 택 의 초기 화, 스 택 빈 판단, 스 택 에 들 어가 기, 스 택 작업
//
void initStack(SqStack &st)
{
st.top=-1; // -1
}/* int stack[maxSize];int top=-1; */
// , 1, 0
int isEmpty(SqStack st)
{
if(st.top==-1)
return 1;
else
return 0;
}
// stack[++top]=x;
int push(SqStack &st,int x)
{
if(st.top==maxSize-1) //
return 0;
++(st.top); //
st.data[st.top]=x;
return 1;
}
// x=stack[top--];
int pop(SqStack &st,int &x)
{
if(st.top==-1) //
return 0;
x=st.data[st.top]; //
--(st.top);
return 1;
}
3. 체인 스 택 초기 화, 스 택 빈 판단, 스 택 에 들 어가 기, 스 택 작업
//
void initStack(LNode *&lst)
{
lst=(LNode *)malloc(sizeof(LNode)); //
lst->next=NULL;
}
//
int isEmpty(LNode *lst)
{
if(lst->next=NULL)
return 1
else
return 0;
}
void push(LNode *lst,int x)
{
LNode *p;
p=(LNode *)malloc(sizeof(LNode)); //
p->next=NULL;
p->data=x;
p->next=lst->next;
lst->next=p;
}
int pop(LNode *lst,int &x)
{
LNode *p;
if(lst->next==NULL) // , 0
return 0;
p=lst->next; //
x=p->data;
lst->next=p->next;
free(p);
return 1;
}
4. 순환 대열 의 초기 화, 팀 의 공중 판단, 입대, 팀 의 빈 상태:
qu.rear==qu.front
팀 의 만 상태: (qu.rear+1)%maxSize==qu.front;
요소 x 진 팀 작업: qu.rear=(qu.rear+1)%maxSize;data[qu.rear]=x;
요소 x 출 팀 작업: qu.front=(qu.front+1)%maxSize;x=qu.data[qu.front];
void initQueue(SqQueue &qu)
{
qu.front=qu.rear=0; // , 0
}
int isQueueEmpty(SqQueue qu)
{
if(qu.front==qu.rear) // 、
return 1; // ,
else
return 0;
}
int enQueue(SqQueue &qu,int x)
{
if((qu.rear+1)%maxSize==qu.front) // ,
return 0;
qu.rear=(qu.rear+1)%maxSize; // ,
qu.data[qu.rear]=x; //
return 1;
}
int deQueue(SqQueue &qu,int &x)
{
if(qu.front==qu.rear) // ,
return 0;
qu.front=(qu.front+1)%maxSize; // ,
x=qu.data[qu.front]; //
return 1;
}
5. 체인 팀 의 초기 화, 팀 의 공중 판단, 입대, 팀 의 빈 상태:
lqu->rear==NULL or lqu->front==NULLL
요소 의 파티 작업 (p 파티): lqu->rear->next=p;lqu->rear=p;
요소 의 파티 작업 (x 팀 요소 저장): p=lqu->front;lqu->front=p->next;x=p->data;free(p);
//
void initQueue(LiQueue *&lqu) //
{
lqu=(LiQueue*)malloc(sizeof(LiQueue));
lqu->front=lqu->rear=NULL;
}
int isQueueEmpty(LiQueue *lqu) //
{
if(lqu->rear==NULL||lqu->front==NULL)
return 1;
else
return 0;
}
void enQueue(LiQueue *lqu,int x)
{
QNode *p;
p=(QNode*)malloc(sizeof(QNode));
p->data=x;
p->next=NULL;
if(lqu->rear==NULL)// , ,
lqu->front=lqu->rear=p;
else
{
lqu->rear->next=p; // ,rear
lqu->rear=p;
}
}
int deQueue(LiQueue *lqu,int &x) //
{
QNode *p;
if(lqu->rear==NULL)//
return 0;
else
p=lqu->front;
if(lqu->fornt==lqu->rear) //
lqu->front=lqu->rear=NULL;
else
lqu->front=lqu->front->next;
x=p->data;
free(p);
return 1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.