// Стекті бастапқы қалыптастыру
Node * first (int d){
Node *pv = new Node;
pv->d = d;
pv->p = 0;
return pv;
}
//--------------------------------
// Стекке орналастыру
void push(Node **top, int d){
Node *pv = new Node;
pv->d = d;
pv->p = *top;
*top = pv;
}
//----------------
// Стектен таңдау
int pop(Node **top){
int temp = (*top)->d;
Node *pv = *top;
*top = (*top)->p;
delete pv;
return temp;
}
Нәтижесі:5 4 3 2 1
Кезек - бұл элемент қосу тізімнің бір басынан, ал таңдау екінші басынан орындалатын бірбағытты тізімнің дербес түрі. Кезектерге қолданылатын басқа опрерациялар анықталмаған. Таңдау кезінде элементті кезектен алып тастайды.Кезек FIFO (first in - first out, бірінші болып енеді - -бірінші болып шығады) қызмет көрсету принципін жүзеге асырады. Мұның жұмыс істеу принципін кезекте бірнеше сағат тұру арқылы көзге жеңіл елестетуге болады.Программалауда кезектердің қолданылу мысалдары:модельдеу, операциялық жүйенің есептерін диспетчерлеу,буферленген енгізу/шығару әрекеттері.
Төмендегі программа 5 бүтін саннан тұратын кезек құрады және соларды экранға шығарады. Кезектің соңына орналастыру функциясы - add, ал таңдау функциясы – del деп аталады. Кезектің басына нұсқауыш - pbeg, ал оның соңына нұсқауыш - pend деп аталады.
#include "stdafx.h"
#include
using namespace System;
using namespace std;
struct Node{
int d;
*
Node *p;
};
Node * first (int d);
void add(Node **pend, int d);
int del(Node **pbeg);
//------------------
int main(){
Node *pbeg = first(1);
Node *pend = pbeg;
for (int i = 2; i<6; i++) add(&pend, i);
while (pbeg)
cout << del(&pbeg)<<’ ‘;
cout << "\n\n";
system("pause");
return 0;
}
//---------------------------------
// Кезекті бастапқы қалыптастыру
Node * first(int d){
Node *pv = new Node;
pv->d = d;
pv->p = 0;
return pv;
}
//-----------------------------------
// Соңына элемент қосу
void add(Node **pend, int d){
Node *pv = new Node;
pv->d = d;
pv->p = 0;
(*pend)->p = pv;
*pend = pv;
}
///-------------------------------------
// Таңдау
int del(Node **pbeg){
int temp = (*pbeg)->d;
Node *pv = *pbeg;
*pbeg = (*pbeg)->p;
delete pv;
return temp;
}
Нәтижесінде:1 2 3 4 5
Достарыңызбен бөлісу: |