dzungchaos

CTDL&TT: Danh sách dùng mảng

May 31st, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define maxlength 1000
  4.  
  5. typedef int elementtype;
  6. typedef struct list_tag{
  7.     elementtype elements[maxlength];
  8.     int last;
  9. }list_type;
  10.  
  11. list_type ds;
  12.  
  13. void create(list_type *lp){
  14.     lp->last = -1; 
  15. }
  16.  
  17. int end(list_type *lp){
  18.     return (lp->last+1);
  19. }
  20.  
  21. void insert(elementtype x, int p, list_type *lp){
  22.     int i;
  23.    
  24.     if(lp->last >= maxlength-1){
  25.         printf("List is full!");
  26.         return;
  27.     }
  28.    
  29.     if ((p<0) || (p>lp->last+1)) {
  30.         printf("Position doesnot exist!");
  31.         return;
  32.     }
  33.    
  34.     for (i=lp->last; i>= p; i--){
  35.         lp->elements[i+1] = lp->elements[i];
  36.     }
  37.     lp->elements[p] = x;
  38.     lp->last++;
  39. }
  40.  
  41. void del(int p, list_type *lp){
  42.     int i;
  43.     if ((p<0) || (p>lp->last)) {
  44.         printf("Position does not exist!\n");
  45.     }  
  46.     lp->last--;
  47.     for (i=p; i <= lp->last; i++){
  48.         lp->elements[i+1] = lp->elements[i];
  49.     }
  50. }
  51.  
  52. int locate(elementtype x, list_type *lp){
  53.     int i;
  54.     for (i = 0; i <= lp->last; i++){
  55.         if (lp->elements[i] == x){
  56.             return i;
  57.         } else return -1;
  58.     }
  59. }
  60.  
  61. int retrieve(int p, list_type *lp){
  62.     if (p<0 || p>lp->last){
  63.         printf("Position does not exist!! \n");
  64.         return;
  65.     }
  66.        
  67.     return lp->elements[p];
  68. }
  69.  
  70. int next(int p, list_type *lp){
  71.     if (p<0 || p>lp->last-1){
  72.         printf("Position does not exist!! \n");
  73.         return;
  74.     }
  75.    
  76.     return lp->elements[p+1];
  77. }
  78.  
  79. int prev(int p, list_type *lp){
  80.     if (p<1 || p>lp->last){
  81.         printf("Position does not exist!! \n");
  82.         return;
  83.     }
  84.    
  85.     return lp->elements[p-1];
  86. }
  87.  
  88.  
  89.  
  90. void printds(list_type *lp){
  91.     int i;
  92.     printf("Danh sach %d phan tu: \n", lp->last+1);
  93.     for (i = 0; i <= lp->last; i++){
  94.         printf("%d", lp->elements[i]);
  95.         printf(" ");
  96.     }
  97.     printf("\n\n");
  98. }
  99.  
  100. void main(){
  101.     create(&ds);
  102.     insert(12,0,&ds);
  103.     printds(&ds);
  104.     insert(6,0,&ds);
  105.     insert(16,0,&ds);
  106.     insert(9,0,&ds);
  107.     insert(7,2,&ds);
  108.     insert(23,3,&ds);
  109.     insert(3,1,&ds);
  110.     insert(40,3,&ds);
  111.     printds(&ds);
  112.     int a = retrieve(4, &ds);
  113.     printf("%d", a);
  114.        
  115. }
Advertisement
Add Comment
Please, Sign In to add comment