Advertisement
MaksNew

Untitled

Feb 20th, 2021
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.41 KB | None | 0 0
  1. unit Unit2;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
  8.  
  9. type
  10.   TFormAddElement = class(TForm)
  11.     Label1: TLabel;
  12.     EditAdd: TEdit;
  13.     ButtonOK: TButton;
  14.     procedure ButtonOKClick(Sender: TObject);
  15.   private
  16.   public
  17.   end;
  18.  
  19. type
  20.   SinglyLinkedList = class
  21.   private
  22.   type PNode = ^Node;   { указатель на узел }
  23.      Node = record    { структура узла }
  24.        element: integer; { элемент }
  25.        next: PNode;      { ссылка на следующий }
  26.      end;
  27.   var Head: PNode;
  28.   public
  29.     constructor Create();
  30.     procedure PushBack(Element: Integer);
  31.     procedure AddFirst(var Head: PNode; NewNode:PNode);
  32.   end;
  33.  
  34. var
  35.   FormAddElement: TFormAddElement;
  36.   Count: Integer = 1;
  37. implementation
  38. uses Unit1;
  39.  
  40. constructor SinglyLinkedList.Create();
  41. begin
  42.     new(head);
  43.     Head := nil;
  44. end;
  45.  
  46. procedure SinglyLinkedList.AddFirst(var Head: PNode; NewNode:PNode);
  47. begin
  48.     New(NewNode);
  49.     NewNode^.next := Head;
  50.     Head := NewNode;
  51. end;
  52.  
  53. procedure SinglyLinkedList.PushBack(Element: Integer);
  54. var
  55.     NewNode: PNode;
  56. begin
  57.     if (Head = nil) then
  58.     begin
  59.         AddFirst(Head, NewNode);
  60.     end
  61.     else
  62.     begin
  63.         New(NewNode);
  64.         NewNode := Head;
  65.         while (NewNode^.next <> nil) do
  66.             NewNode := NewNode.next;
  67.         NewNode^.element := Element;
  68.         NewNode^.next := nil;
  69.     end;
  70. end;
  71.  
  72. {$R *.dfm}
  73.  
  74. function IsElementCorrect(EditAdd:TEdit):Boolean;
  75. var
  76.     IsCorrect: Boolean;
  77. begin
  78.     IsCorrect := True;
  79.     Try
  80.         StrToInt(EditAdd.Text)
  81.     Except
  82.         IsCorrect := False;
  83.         ShowMessage('sosi');
  84.     End;
  85.     IsElementCorrect := IsCorrect;
  86. end;
  87.  
  88.  
  89. procedure TFormAddElement.ButtonOKClick(Sender: TObject);
  90. var
  91.     List: SinglyLinkedList;
  92.     Element: Integer;
  93. begin
  94.     if count = 1 then
  95.         List.Create();
  96.     if IsElementCorrect(EditAdd) then
  97.     begin
  98.         Element := StrToInt(EditAdd.Text);
  99.         ListForm.StringGrid1.Cells[1,count] := EditAdd.Text;
  100.         ListForm.StringGrid1.Cells[0,count] := IntToStr(Count);
  101.         ListForm.StringGrid1.RowCount := ListForm.StringGrid1.RowCount + 1;
  102.         List.PushBack(Element);
  103.         Inc(Count);
  104.         EditAdd.Text := '';
  105.         FormAddElement.Close;
  106.     end;
  107. end;
  108.  
  109. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement