Advertisement
Guest User

lista char

a guest
Jan 20th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. //operowanie lista
  2. program lista3;
  3. {$APPTYPE CONSOLE}
  4. uses
  5. SysUtils;
  6.  
  7. TYPE PElem = ^TElem;
  8. TElem = RECORD
  9. nr: integer;
  10. dane : char;
  11. wsk :PElem;
  12. END;
  13. VAR q,poczatek,glowa,temp,koniec,biezacy,po,na:PElem;
  14. n,d,licz,aa:integer;
  15. k:char;
  16.  
  17. function ListSearchChar(head:PElem;k:char):PElem;
  18. begin
  19. while (head <> nil) and (k <> head^.dane) do
  20. head := head^.wsk;
  21. ListSearchChar := head;
  22. end;
  23. function ListSearchInt(head:PElem;d:integer):PElem;
  24. begin
  25. while (head <> nil) and (d <> head^.nr) do
  26. head := head^.wsk;
  27. ListSearchInt := head;
  28. end;
  29. procedure TworzListePocz(n:integer);
  30. begin
  31. poczatek:=nil;
  32. WHILE n>0 DO
  33. BEGIN
  34. new(q);
  35. q^.wsk:=poczatek;
  36. poczatek:=q;
  37. poczatek^.dane:=char(random(25)+97);
  38. poczatek^.nr:=n;
  39. n:=n-1;
  40. END;
  41. end;
  42.  
  43.  
  44. procedure WypiszListe;
  45. var pom,q:PElem;
  46. begin
  47. writeln;
  48. pom:=poczatek;
  49. WHILE pom<>NIL DO
  50. BEGIN
  51. q:=pom;
  52. write(' ',q^.nr,'.',q^.dane);
  53. pom:=q^.wsk;
  54. END;
  55. writeln;
  56. end;
  57. Procedure DodajZa(w:char);
  58. BEGIN
  59. po:=biezacy;
  60. na:=biezacy^.wsk;
  61. NEW(biezacy);
  62. biezacy^.dane:=w;
  63. biezacy^.wsk:=na;
  64. po^.wsk:=biezacy;
  65. End;
  66. Procedure DodajPrzedStary(k:char);
  67. var {po,na:PElem;}
  68. test:integer;
  69. begin
  70. dodajZa(k);
  71. {przesuwanie przed biezacy}
  72. test:=po^.nr;
  73. // po^.dane:=biezacy^.dane;
  74. biezacy^.nr:=test+1;
  75.  
  76.  
  77. end;
  78.  
  79. Begin
  80.  
  81. write('Podaj dlugosc listy (0<n<100) n='); readln(n);
  82.  
  83. writeln(' tworzenie listy od poczatku wypelnionej znakami ');
  84. TworzListePocz(n);
  85. glowa:=poczatek;
  86. WypiszListe;
  87. writeln;
  88. writeln;
  89. // dodanie - przed biezacym
  90. writeln;
  91. write('Za ktory element wstawic? dane=');readln(d);
  92. write('Jaka wartosc wstawic? k=');readln(k);
  93. biezacy:=ListSearchInt(glowa,d);
  94. if biezacy<>nil then DodajPrzedStary(k)
  95. else writeln('Nie istnieje ',d,' na liscie');
  96. WypiszListe;
  97. write('Poszukiwany element =' );readln(k);
  98. temp:=ListSearchChar(glowa,k);
  99. IF temp<>NIL THEN writeln('Znaleziony element na miejscu= ',temp^.nr)
  100. ELSE writeln('Nie znaleziono wartosci ',k);
  101.  
  102.  
  103. readln;
  104. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement