검토 세 가지 데이터 구조 : 스택과 큐

다음 짧게 큐 스택을 설명하고
스택 (스택) A는 마지막 제 아웃 (LIFO) 선형 형태 테이블의 끝 (즉, 스택의 상단 삽입 또는 삭제) 열차 스케쥴의 꼬리에 머리 등.

그림 삽입 설명 여기
큐 스택에 (큐) 대향하는 제 아웃 제 라는 형태로 선형 (FIFO), 삽입 한쪽에만 상기 삭제 타단, 삽입 단 허용 꼬리 일단 허용은 삭제라는 는 AS 팀장 , 바로 일상 생활을 일렬로.

그림 삽입 설명 여기

스택의 표현 및 조작을 달성

이미 배운 지식을 바탕으로, 우리는 스택, 스택의 이름 순서, 스택 체인을 달성하기 위해 순차 저장 구조와 체인 저장 구조 두 개의 저장 구조를 사용할 수 있습니다.

스택 순서

스택 데이터 필드의 순서는 삭제가 변경 조작과 공간을 찾기 위해 관련된 스택, 상부,베이스 및 최대 용량 STACKSIZE 스택의 단부에 스택 포인터를 포함하는, 주목하고자하는 올바르게 스택 포인터 움직임 상기 스택 동작 중 데이터 데이터를 삭제했지만 원래 공간에 남아 등 때 수신 동작이 적용되어되지 않았다.
약간 특정 알고리즘을
주로 아래 링크 스택을 볼 수 :

체인 스택

저장 구조 :

typedef struct StackNode{
    char data;    
    struct StackNode *next;
    }StackNode,*LinkStack;

주요 스택 작업이 스택과 스택의 삽입과 삭제가이기 때문에 분명히 연결리스트 헤드는 가장 편리한,하지만 필요한 작업의 용이성을위한 단일 연결리스트와 같은 및 부착 헤더 노드입니다.

도 1을 참조하면, 초기
에 빈 스택의 구성은, 블랭킹 직접 스택 포인터 첫 번째 노드가 없기 때문에
제 2 스택
알고리즘 단계 :
1. 그리기 요소 (E)이 공간 할당에 포인터 (P)를 가리키는
2, 새로운 노드 데이터 E 필드에 설정된
3, 새로운 노드가 스택에 삽입된다.
(4) 스택 포인터는 P- 수정
코드 구현 :

void Push(LinkStack &s,int e){
    LinkStack p=new StackNode;    
    p->data=e;
    p->next=s;    
    s=p;
    }

相当于把前面的元素都往栈里压
3、出栈
算法步骤:
1、判断是否栈空
2、将栈顶元素赋给e(不需要返回时可省略此步)
3、临时保存栈顶元素的空间,以备释放
4、修改栈顶指针,指向新的栈顶元素
5、释放原栈顶元素的空间
代码实现:

void Pop(LinkStack &s){
    if(!s){        
    cout<<"There's Nothing to Pop!\n";        
    return;        
    }    
    LinkStack p=s;    
    s=s->next;    
    delete p;
    }

这个比较好理解
4、取栈顶元素
直接返回栈顶指针s数据域,注意判断栈空

队列的表示和操作的实现

队列也有顺序和链式两种存储表示

顺序队列

存储结构是基地址base以及头尾指针front和rear(假装是指针,其实用作数组下标)
初始front=rear=0
进队rear++
出队front–
front始终指向队列头元素,rear始终指向队尾元素的下一个位置
头尾指针相同时队空
由于这种操作会造成“假溢出”(空间未占满,但rear已至base尾部,新元素无法入队)的问题,所以更提倡循环队列;用模运算来解决新增元素位置的问题。

如何区别循环队列满还是空?
1、牺牲一个元素空间,即队列空间大小为m时,有m-1个元素就认为队满,这样头尾指针相同时队空,而尾指针在循环意义上加1后等于头指针,则认为队满
此时队空条件:Q.front==Q.rear;
队满条件:(Q.rear+1)%maxqsize=Q.front
2、另设标志位区分队空还是队满

코드 구현하는 순환 큐 주 :
(1) 초기 공간 분포 참고두고 공간 할당 실패 출구
(2), 필요한 길이를 이용하여 (Q.rear-Q.front +의 maxqsize) %의 maxqsize, 플러스 마이너스의 maxqsize 방지

체인 팀

저장 구조 :

typedef struct QNode{
    int data;    
    struct QNode *next;
    }QNode,*QueuePtr;
typedef struct{
    QueuePtr front;    
    QueuePtr rear;
}LinkQueue;

초기 전면 HOL 큐 꼬리 후면 공통 연결 지점, 포인터 필드는 비워는, 이후의 요소가 큐에, 꼬리 요소 후면에 항상 점, 요소 큐에서 머리가 차지하는 원래 공간의 방출을주의입니다.

------------------------------------
참고 :이 문서의 내용은 "데이터 구조의 모든은 (C 언어 두 번째 판) "(와 얀 웨이 민 교사)
바이에서 사진

출시 여섯 개 원래 기사 · 원의 칭찬 0 · 조회수 137

추천

출처blog.csdn.net/Roy_F_M/article/details/103833289