Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка-2.doc
Скачиваний:
29
Добавлен:
20.09.2019
Размер:
194.56 Кб
Скачать

Класс tList

import java.io.*;

public class Tlist implements java.io.Serializable

{

elm head;

public Tlist()

{

head=null;

}

void insert_numb(int N,object val)

{

if(head==null)

{

head=new elm(val);

return;

}

elm p=head;

for(int i=1;i<N;i++,p=p.next);

p.before(val);

if(N==1) head=head.prev;

}

void del_numb(int N)

{

if(head==null) return;

if(head==head.next){head=null; return;}

elm p=head;

for(int i=1;i<N;i++,p=p.next);

p.remove();

}

int find_max()

{

int i,_max;

elm max=head; //первый элемент максимальный

i =1;_max=1;

elm p=head.next;

for(;p!=head;p=p.next,i++)

if((p.obj.Cmp(max.obj))>0){ max=p;_max=i;}

return _max;

}

int find_min()

{

elm min=head; //первый элемент максимальный

elm p;

int i,_min;

i=0;_min=0;

for(p=head.next;p!=head;p=p.next)

if((p.obj.Cmp(min.obj))<0){ min=p;_min=i;}

return _min;

}

void insert_por(object val)

{

if(head==null)

{

head=new elm(val);

return;

}

elm p=head;

if((p.obj.Cmp(val))>0)

{

insert_numb(1,val);

return;

}

p=p.next;

for(;p!=head && p.obj.Cmp(val)<0;p=p.next);

p.before(val);

}

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

public void sort()

{

Tlist out=new Tlist();

elm p=head;

out.insert_por(p.obj.Copy());

p=p.next;

while(p!=head)

{

out.insert_por(p.obj.Copy());

p=p.next;

}

destroy();

head=out.head;

out.head=null;

//show();

}

void destroy()

{

if(head==null) return;

head=null;

}

int size()

{

int i=0;

elm p=head;

i++;

p=p.next;

for(;p!=head;p=p.next,i++);

return i;

}

public void show()

{

if(head==null)

return;

head.put();

elm p=head.next;

for(;p!=head;p=p.next)

{

p.put();

}

}

public object Get_obj(int index)

{

if(head==null)

return null;

if(index==-1) return head.prev.obj;

if(index==0) return head.obj;

elm p=head;

p=p.next;

for(int i=1;p!=head && i<index;p=p.next,i++);

return p.obj;

}

public void Save_list(String fn)

{

try

{

FileOutputStream F=new FileOutputStream(fn);

int v0=size();

integer t=new integer(v0);

t.Save(F);

elm p=head;

F.write(p.obj.Type());

p.obj.Save(F);

p=p.next;

for (;p!=head;p=p.next)

{

F.write(p.obj.Type());

p.obj.Save(F);

}

F.close();

}

catch(FileNotFoundException e){

System.out.println("Невозможно произвести запись в файл: " + fn);}

catch (IOException e){

System.out.println("Ошибка ввода/вывода: " + e.toString());}

catch (Exception e){

System.out.println("Ошибка ввода/вывода объекта: " + e.toString());

}

}

public void BSave_list(String fn) throws Exception

{

FileOutputStream F=new FileOutputStream(fn);

Object objSave = this;

ObjectOutputStream oos = new ObjectOutputStream(F);

oos.writeObject(objSave);

F.close();

}

public void Load_list(String fn)

{

try

{

FileInputStream F=new FileInputStream(fn);

integer N_ob=new integer(0);

N_ob.Load(F);

int i;

int T;

object val;

integer dati=new integer(0);

cstring dats=new cstring();

for(i=0;i<N_ob.val;i++)

{

T=F.read();

switch(T)

{

case 1: dati.Load(F); val=dati; break;

case 2: dats.Load(F); val=dats; break;

default: dats.Load(F); val=dats; break;

}

insert_numb(0,val.Copy());

}

F.close();

}

catch(FileNotFoundException e){

System.out.println("Невозможно произвести запись в файл: " + fn);}

catch (IOException e){

System.out.println("Ошибка ввода/вывода: " + e.toString());}

catch (Exception e){

System.out.println("Ошибка ввода/вывода объекта: " + e.toString());

}

}

public void BLoad_list(String fn) throws Exception

{

FileInputStream F = new FileInputStream(fn);

ObjectInputStream ois = new ObjectInputStream(F);

Object objRead = ois.readObject();

Tlist tmp=(Tlist)objRead;

head = tmp.head;

F.close();

}

}