• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Lista jednokierunkowa (Delphi/C/C++) - PILNE!

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
479 wizyt
pytanie zadane 8 grudnia 2015 w Inne języki przez Int_main Bywalec (2,850 p.)

Pilnie potrzebuję pomocy z kilkoma zadaniami dotyczącymi listy jednokierunkowej:

1.Wstawienie elementu o kluczu k na koniec listy.
2.Wstawienie elementu o kluczu k za i-tym elementem na licie
3.Usunięcie z listy wszystkich elementów o kluczu k
4.Przeglądanie całej listy i wypisanie klucza każdego elementu

Zadania muszę napisać w Delphi, ale jeśli ktoś ma pomysł w języku C lub C++ to też nie pogardzę jednak proszę dodatkowo o pseudokod - mogę nie znać składni.
Poniżej załączam to co już udało mi się zrobić:
http://pastebin.com/cAyBDts1

 

1 odpowiedź

0 głosów
odpowiedź 31 grudnia 2015 przez sonquer Gaduła (4,280 p.)
wybrane 2 stycznia 2016 przez Int_main
 
Najlepsza
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  TJList = record
      key : UInt32;
      next : Pointer;
  end;

type
  TJListClass = Class
    public
      constructor Create( k : Uint32);
      procedure Add( k : UInt32 );
      procedure AddAfterElement( k : UInt32; i : UInt32 );
      procedure RemoveKeysFromList( k : UInt32 );
      procedure Show;
    protected
      ptr : Pointer;
      first : Pointer;
  End;

constructor TJListClass.Create( k : UInt32 );
var
  list : Pointer;
begin
  list := AllocMem(SizeOf(TJList));
  TJList(list^).key := k;
  TJList(list^).next := nil;
  Self.ptr := list;
  Self.first := list;
end;

procedure TJListClass.Add( k : UInt32 );
var
  list : Pointer;
begin
  list := AllocMem(SizeOf(TJList));
  TJList(list^).key := k;
  TJList(list^).next := nil;
  TJList(Self.ptr^).next := list;
  Self.ptr := list;
end;

procedure TJListClass.RemoveKeysFromList( k : UInt32 );
var
  tmp : Pointer;
  m, n : Pointer;
begin
  tmp := first;
  repeat
      if TJList(TJList(tmp^).next^).key = k then
        begin
          TJList(tmp^).next := TJList(TJList(tmp^).next^).next;
          ReallocMem( tmp, SizeOf(TJList) );
          RemoveKeysFromList(k);
          Exit;
        end;
      tmp := TJList(tmp^).next;
  until TJList(tmp^).next = nil;
end;

procedure TJListClass.AddAfterElement( k : UInt32; i : UInt32 );
var
  tmp, list : Pointer;
  x : Int32;
begin
  x := 0;
  tmp := first;
  repeat
      if i = x then
        begin
          list := AllocMem(SizeOf(TJList));
          TJList(list^).key := k;
          TJList(list^).next := TJList(tmp^).next;
          TJList(tmp^).next := list;
          Exit;
        end;
      tmp := TJList(tmp^).next;
      inc(x);
  until TJList(tmp^).next = nil;
  if i = x then
    begin
      list := AllocMem(SizeOf(TJList));
      TJList(list^).key := k;
      TJList(list^).next := TJList(tmp^).next;
      TJList(tmp^).next := list;
    end;
end;

procedure TJListClass.Show;
var
  tmp : Pointer;
begin
  tmp := first;
  repeat
      Writeln( TJList(tmp^).key );
      tmp := TJList(tmp^).next;
  until TJList(tmp^).next = nil;
  Writeln( TJList(tmp^).key );
end;

var
  list : TJListClass;
begin
  try
    list := TJListClass.Create( 1 );
    list.Add( 2 );
    list.Add( 3 );
    list.Add( 4 );

    list.AddAfterElement( 1, 0 );
    list.AddAfterElement( 2, 2 );
    list.AddAfterElement( 3, 4 );
    list.AddAfterElement( 4, 6 );

    list.RemoveKeysFromList( 3 );

    list.Show;

    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

 

Podobne pytania

0 głosów
0 odpowiedzi 222 wizyt
pytanie zadane 3 kwietnia 2022 w Inne języki przez Dia Nowicjusz (120 p.)
–1 głos
2 odpowiedzi 392 wizyt
pytanie zadane 30 stycznia 2021 w Inne języki przez Corevus Nowicjusz (130 p.)
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 12 lipca 2016 w Inne języki przez Royd Obywatel (1,250 p.)

93,433 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...