⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 一份数据结构的课程设计完整代码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, Menus;

const site:array [0..7] of integer=(0,7,26,32,51,55,57,61);

type  BinaryTree =
        record
          data:char;
          left,right:integer;
        end;
     Tree=array[1..7]of BinaryTree;
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    SpeedButton1: TSpeedButton;
    GroupBox1: TGroupBox;
    SpeedButton2: TSpeedButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Demo();
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure SpeedButton2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure N5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Order:string;
  s:Tree;
  Flag:Boolean;
implementation

uses Unit2;

{$R *.dfm}

procedure CreateTree();
begin;
    s[1].data:='A'; s[1].left:=2;s[1].right:=3;
    s[2].data:='B'; S[2].left:=4;s[2].right:=5;
    s[3].data:='C'; s[3].left:=6;s[3].right:=7;
    s[4].data:='D'; s[4].left:=0;s[4].right:=0;
    s[5].data:='E'; s[5].left:=0;s[5].right:=0;
    s[6].data:='F'; s[6].left:=0;s[6].right:=0;
    s[7].data:='G'; s[7].left:=0;s[7].right:=0;
end;


procedure PreOrder(T:Tree;k:integer);
begin
  Order:=Order+T[k].data;
  if T[k].left<>0 then PreOrder(T,T[k].left);
  if T[k].right<>0 then PreOrder(T,T[k].Right);
end;

procedure InOrder(T:Tree;k:integer);
begin
  if T[k].left<>0 then InOrder(T,T[k].left);
  Order:=Order+T[k].data;
  if T[k].right<>0 then InOrder(T,T[k].right);
end;

procedure PostOrder(T:Tree;k:integer);
begin
  if T[k].left<>0 then PostOrder(T,T[k].left);
  if T[k].right<>0 then PostOrder(T,T[k].right);
  Order:=Order+T[k].data;
end;

procedure Delay(MSecs: Longint);
var
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount();
  repeat
    Application.ProcessMessages;
    Now := GetTickCount();
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;

procedure Tform1.Demo();
var k:integer;
begin
  Flag:=False;
  Button1.Enabled:=False;
  Button2.Enabled:=False;
  Button3.Enabled:=False;
  SpeedButton1.Enabled:=False;
  SpeedButton2.Enabled:=False;
  SpeedButton1.Caption:='';
  SpeedButton2.Caption:='';
  Label4.Caption:='↑';
  Label4.Left:=123;
  for k:=1 to 8 do
    begin
      delay(1000);
      Label4.Left:=Label4.Left+7;
      RichEdit1.SelStart:=site[ord(order[k])-64];
      RichEdit1.SelLength:=1;
      RichEdit1.SelAttributes.Color:=clRed;

      RichEdit1.SelStart:=site[ord(order[k-1])-64];
      RichEdit1.SelLength:=1;
      RichEdit1.SelAttributes.Color:=clblack;
      
    end;
  Flag:=True;
  Button1.Enabled:=True;
  Button2.Enabled:=True;
  Button3.Enabled:=True;
  SpeedButton1.Enabled:=True;
  SpeedButton2.Enabled:=True;
  SpeedButton1.Caption:='关于';
  SpeedButton2.Caption:='帮助';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Order:='';
  PreOrder(s,1);
  Label1.Caption:=Order;
  Demo();
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
  Order:='';
  InOrder(s,1);
  Label1.Caption:=Order;
  Demo();
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Order:='';
  PostOrder(s,1);
  Label1.Caption:=Order;
  Demo();
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  CreateTree();
  Flag:=True;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  SpeedButton1.Font.Color:=clBtnFace;
  Form2.Show;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  SpeedButton1.Font.Color:=clBtnFace;
  SpeedButton2.Font.Color:=clBtnFace;
end;

procedure TForm1.SpeedButton2MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  SpeedButton2.Font.Color:=clblack;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  SpeedButton2.Font.Color:=clBtnFace;
  ShowMessage('本程序可演示二叉树的三种遍历');
end;

procedure TForm1.SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
   SpeedButton1.Font.Color:=clblack;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbRight then
     begin
       SpeedButton1.Font.Color:=clblack;
       SpeedButton2.Font.Color:=clblack;
     end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SpeedButton1.Font.Color:=clBtnFace;
  SpeedButton2.Font.Color:=clBtnFace;
end;

procedure TForm1.GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var P:TPoint;
begin
  if (Button=mbRight)and(Flag=True) then
  begin
     GetCursorPos(P);
     PopupMenu1.Popup(P.X,P.Y);
  end;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
  close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -