рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Delete q;

Delete q; - раздел Информатика, Динамически размещаемые данные:память для них выделяется по операции new, существуют они пока эта память не будет освобождена } 11.пример Функции, Которая Вставляет В Связанный ...

}

11.Пример функции, которая вставляет в связанный список beg элемент x : tip на свое место, и создаёт упорядоченный список за несколько обращений к функции с разными элементами.

void ВСТАВКА (tel * & beg, tip x)

{tel *p, *q, *t;

// поиск места вставки x

t = beg; p = NULL;

bool b = true;

while (t && b)

if (t -> inf < x) {p=t; t = t->next;}

else b=false; // найдено место вставки

//создание нового элемента

q= new tel; q->inf = x;

if (p == NULL) // вставка в начало или в пустой список

{q ->next = beg; beg = q;}

else//вставка после элемента, на который указывает p

{q-> next = p->next;

p-> next =q; }//это может быть вставка в конец,если

// (p->next=0), либо в середину

}

Динамические структуры можно создавать на основе связанного списка. В этом случае элементы динамической структуры составляют информационные части элементов списка.

Рассмотрим реализацию стека на основе связанного списка. (в виде 3-х файлов).

// stack3f.h

#include <iostream>

#include <fstream>

using namespace std;

struct segment

{int lg,rg;

};

typedef segment tip;

struct tdp

{tip inf;

tdp *next;

};

void clrst(tdp * &);

void push (tdp * &, tip );

void pop (tdp * &);

tip topst (tdp * );

bool emptyst (tdp * );

ofstream & operator <<(ofstream &, tip);

 

// stack3fR.cpp

#include "stack3f.h"

// Очистка стека

void clrst (tdp * & s)

{s=NULL;}

/*//запись элемента х в стек

tdp * push (tdp* s, tip x)

{tdp *r=new tdp;

(*r).inf=x;

(*r).next=s;

s=r;

return s;

}*/

//запись элемента х в стек

void push(tdp* & s, tip x) //возвр. указатель на вершину стека через //параметр

{tdp *r=new tdp;

(*r).inf=x;

(*r).next=s;

s=r;

}

//выталкивание эл-та из непустого стека

void pop(tdp* & s) //возвр. ук-ль на вершину стека через параметр

{tdp * p=(*s).next;

delete s;

s=p; //новая вершина стека

}

//проверка стека на пустоту

bool emptyst (tdp* s)

{return (s==0); //NULL;

}

//

tip topst (tdp * s )

{return s->inf;}

ofstream & operator <<(ofstream &f, tip el)

{f<<'['<<el.lg<<" - "<<el.rg<<']';

return f;

}

//NERECHOAR.cpp

#include <iomanip>

#include "stack3f.h"

 

using namespace std;

// Пример для лекции

int const ni=100;

ifstream fin;

ofstream fout;

void readm(ifstream & fin,int& k,int a[]);

void writem(ofstream &fout, int k,int a[]);

void sortHnr(int a [], int l, int r);

int main ()

{ int k;

int a[ni];

fout.open("rez.txt");

if(fout.fail()){cout<<"?open rez.txt";return 2;}

fin.open("dan.txt");

if(fin.fail()){cout<<"?open dan.txt";return 2;}

readm(fin,k,a);

writem(fout,k,a);

sortHnr(a,0,k-1);

writem(fout,k,a);

fout.close();fin.close();

return 0;

}

void readm(ifstream & fin,int & k,int a[])

{k=0;

// чтение массива

while (fin>>a[k])k++;

}

void writem(ofstream &fout,int k,int a[])

{for(int i=0;i<k;i++)

{fout<<setw(6)<<a[i];

if((i+1)%10==0)fout<<endl;

}

fout<<endl;

}

 

//сортировка Хоара

void sortHnr (int a[],int l, int r)

{tdp * beg=0;

tip el;

el.lg=l; el.rg=r; push(beg, el);

 

while (! emptyst (beg))

{ el=topst(beg); pop(beg);

l=el.lg; r=el.rg;

fout<<el<<'n';

do

{ int i=l, j=r;

int x=a[(l+r)/2]; fout<<x<<'n';

//цикл разделения

do

{while (a[i]<x) i++;

while (a[j]>x) j--;

if (i<=j)

{int w=a[i]; a[i]=a[j]; a[j]=w;

i++; j--; }

}

while (i<=j);

//отрезок [l,r] разделён на два [l,j] [i,r]

if (i<r) {el.lg=i; el.rg=r; push(beg, el);}

r=j;

}while(l<r);

}

}

 

– Конец работы –

Эта тема принадлежит разделу:

Динамически размещаемые данные:память для них выделяется по операции new, существуют они пока эта память не будет освобождена

Замечание В языке С были рассмотрены данные простых и сложных типов Перед новой темой можно привести некоторую классификацию данных... по структуре... данные статической структуры которые получают структуру при описании и сохраняют е не нарушая до конца программы...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Delete q;

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Динамические структуры данных.
Элементы в них однотипные, но количество их не фиксируется в структуре. Динамические структуры – это: последовательность, стек,

Реализация очереди на основе массива.
0 1 2 3 4 . . . . . . . . . . size . . . . . . . . . . . . . . . . NN-1

Bool overqu (queue q);
void wrfqu(ofstream &fout,queue q);   //queue3fR.cpp - файл реализации #include "queue3f.h"

Tip topqu (queue q)
{return q.x[q.beg];} //проверка очереди на пустоту bool emptyqu (queue q){return q.size==0;} //проверка очереди

Fin.close();
//1)сделать очереди пустыми for (int i=0; i<l; i++) clrqu(w[i]); int x=1, k=1; //2)записать x в файл

Лекция 6.
4. Линейный список –совокупность однотипных элементов, расположенных последовательно друг за другом, количество элементов в списке не фиксируется.

Связанный список.
Пусть x0 , x1 ,x2 ,. . . . .xn-3, xn-2, xn-1 – совокупность значений данных некоторого типа tip, к

Struct tel
{tip inf; //информационная часть tel *next; //указатель на следующий элемент }; 2. Описать указатель на связанный списо

Q= new tel;
(*q) . inf=x; (*q). next=beg; beg = q; 6. Включить элемент x : tip в связанный список

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги