Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Quản lí lộ trình tàu hỏa viết bằng C

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    Mặc định Quản lí lộ trình tàu hỏa viết bằng C

    Em có viết cái code đúng như thầy giáo dạy nhưng mà nó không chạy đúng.
    Có chỉnh một lúc, hoa hết cả mắt mà chưa ra, mong chỉ dạy.
    Code đây:
    C Code:
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #include<conio.h>
    4. #include<dos.h>
    5. #include<string.h>
    6. #include <math.h>
    7. #include<alloc.h>
    8. #include<ctype.h>
    9.  
    10. #define     TRUE    1
    11. #define     FALSE   0
    12. /* Cau truc thong tin ve doan tau */
    13. typedef struct {
    14.     char gatruoc[20];
    15.     char gasau[20];
    16.     int chieudai;
    17.     int thoigian;
    18. } doan;
    19. /* cau truc 1 nut trong danh sach lien ket kep*/
    20. typedef struct node{
    21.     doan infor;
    22.     struct node *left,*right;
    23. };
    24. typedef struct node *NODEPTR;
    25. /* cap phat 1 nut*/
    26. NODEPTR Getnode(void){
    27.     NODEPTR p;
    28.     p =(NODEPTR) malloc(sizeof(struct node));
    29.     return(p);
    30. }
    31. /* giai phong 1 nut*/
    32. void Freenode( NODEPTR p){
    33.     free(p);
    34. }
    35. /* khoi dong danh sach*/
    36. void Initialize(NODEPTR *plist){
    37.     *plist=NULL;
    38. }
    39. /* kiem tra tinh rong*/
    40. int Empty(NODEPTR *plist){
    41.     if (*plist==NULL)
    42.         return(TRUE);
    43.     return(FALSE);
    44. }
    45. /* xac dinh so nut*/
    46. int Listsize(NODEPTR *plist){
    47.     NODEPTR p;int n;
    48.     p=*plist;n=0;
    49.     while(p!=NULL){
    50.         p=p->right;
    51.         n++;
    52.     }
    53.     return(n);
    54. }
    55. /* xac dinh vi tri con tro dang o vi tri thu i trong danh sach*/
    56. NODEPTR Nodepointer(NODEPTR *plist,int i){
    57.     NODEPTR p;int vitri;
    58.     p=*plist;vitri=0;
    59.     while (p!=NULL && vitri<i){
    60.         p=p->right;
    61.         vitri++;
    62.     }
    63.     return(p);
    64. }
    65. /* xax dinh vi tri nut p trong danh sach*/
    66. int Position(NODEPTR *plist, NODEPTR p){
    67.     int vitri; NODEPTR q;
    68.     q = *plist;vitri=0;
    69.     while (q!=NULL && q!=p){
    70.         q = q->right;
    71.         vitri++;
    72.     }
    73.     if (q==NULL)
    74.         return(-1);
    75.     return(vitri);
    76. }
    77. /* them 1 nut moi vao dau danh sach*/
    78. void Push(NODEPTR *plist, doan x){
    79.     NODEPTR p;p = Getnode();
    80.     p ->infor = x;
    81.     if(*plist==NULL){
    82.         p->left=NULL;
    83.         p->right=NULL;
    84.         *plist=p;
    85.     }
    86.     else {
    87.         p->right = *plist;
    88.         (*plist)->left=p;
    89.         p->left=NULL;
    90.         *plist=p;
    91.     }
    92. }
    93. /* them nut moi vao sau nut p */
    94. void Insertright(NODEPTR p, doan x){
    95.     NODEPTR q,r;
    96.     if (p==NULL){
    97.         printf("\n Nut khong co thuc");
    98.         delay(2000);return;
    99.     }
    100.     else {
    101.         q=Getnode();
    102.         q->infor=x;
    103.         r=p->right;
    104.         r->left=q;
    105.         q->right=r;
    106.         q->left=p;
    107.         p->right=q;
    108.     }
    109. }
    110. /* them nut moi vao truoc nut p*/
    111. void Insertleft(NODEPTR *plist, NODEPTR p, doan x){
    112.     NODEPTR q, r;
    113.     if (p==NULL) {
    114.         printf("\n Node khong co thuc");
    115.         delay(2000); return;
    116.     }
    117.     if (p==*plist)
    118.         Push(plist,x);
    119.     else {
    120.         q=Getnode();
    121.         q->infor=x;
    122.         r=p->left;
    123.         r->right=q;
    124.         q->left=r;
    125.         q->right=p;
    126.         p->left=q;
    127.     }
    128. }
    129. /* xao nut o dau danh sach*/
    130. doan Pop(NODEPTR *plist){
    131.     NODEPTR p;doan x;
    132.     if (Empty(plist)){
    133.         printf("\n Danh sach rong");
    134.         delay(2000);
    135.     }
    136.     else {
    137.         p = *plist;
    138.         x=p->infor;
    139.         if ((*plist)->right==NULL)
    140.             *plist=NULL;
    141.         else{
    142.              *plist=p->right;
    143.              (*plist)->left=NULL;
    144.         }
    145.         Freenode(p);
    146.     }
    147.     return(x);
    148. }
    149. /* xoa nut co con tro la p trong danh sach*/
    150. doan Delnode(NODEPTR *plist, NODEPTR p) {
    151.     NODEPTR q, r;doan x;
    152.     if (p==NULL){
    153.         printf("\n Node khong co thuc");
    154.         delay(2000);return(x);
    155.     }
    156.     if (*plist==NULL){
    157.         printf("\n Danh sach rong");
    158.         delay(2000);
    159.     }
    160.     else {
    161.         x=p->infor;
    162.         q = p->left;
    163.         r = p->right;
    164.         r ->left = q;
    165.         q ->right=r;
    166.         Freenode(p);
    167.     }
    168.     return(x);
    169. }
    170. /* duyet danh sach tu trai sang phai */
    171. void Righttraverse(NODEPTR *plist){
    172.     NODEPTR p; int stt;
    173.     if (Empty(plist)){
    174.         printf("\n Khong cos doan nao");
    175.         delay(2000); return;
    176.     }
    177.     p = *plist; stt=0;
    178.     while (p!=NULL){
    179.         printf ("\n %5d %20s %20s %7d%7d", stt++,p->infor.gatruoc,
    180.         p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    181.         p=p->right;
    182.     }
    183. }
    184. /* duyet danh sach tu phai sang trai*/
    185. void Lefttraverse(NODEPTR *plist){
    186.     NODEPTR p;int stt;
    187.     if (Empty(plist)){
    188.         printf("\n Khong co doan nao");
    189.         delay(2000); return;
    190.     }
    191.     stt =0;p = Nodepointer(plist,Listsize(plist)-1);
    192.     while (p!=NULL){
    193.         printf("\n %5d %20s%20s%7d%7d", stt++, p->infor.gasau,
    194.         p->infor.gatruoc, p->infor.chieudai, p->infor.thoigian);
    195.         p = p->left;
    196.     }
    197. }
    198. /* thong tin ve ga truoc */
    199. NODEPTR Search1(NODEPTR *plist, char x[]){
    200.     NODEPTR p=*plist;
    201.     while (strcmp(p->infor.gatruoc,x)!=0 && p!=NULL)
    202.         p = p->right;
    203.     return(p);
    204. }
    205. /* thong tin ve ga sau */
    206. NODEPTR Search2(NODEPTR *plist, char x[]){
    207.     NODEPTR p=*plist;
    208.     while (strcmp(p->infor.gasau,x)!=0 && p!=NULL)
    209.         p = p->right;
    210.     return(p);
    211. }
    212. /* loai bo toan bo cac nut cua danh sach*/
    213. void Clearlist(NODEPTR *plist){
    214.     while (*plist!=NULL){
    215.         Pop(plist);
    216.     }
    217. }
    218. /* Bao lo trinh cac tuyen */
    219. void Message(NODEPTR *plist, char noidi[], char noiden[], char c){
    220.     NODEPTR p, p1;int kc, tg;
    221.     if (c=='x'){
    222.         p=Search1(plist, noidi);
    223.         if (p==NULL){
    224.             printf("\n Khong co lo trinh");
    225.             delay(2000);return;
    226.         }
    227.         if (strcmp(noidi, noiden)==0){
    228.                 printf("\n Noi di trung noi den");
    229.                 delay(2000); return;
    230.         }
    231.         p1= Search2(plist, noiden);
    232.         if (p1==NULL){
    233.             printf("\n Noi den khong co thuc");
    234.             delay(2000); return;
    235.         }
    236.         if (Position(plist,p)<=Position(plist,p1) ) {
    237.             kc=tg=0;
    238.             while(p!=p1){
    239.                 kc = kc + p->infor.chieudai;
    240.                 tg = tg + p->infor.thoigian;
    241.                 printf("\n %20s ->%20s: %7d km %7d gio",p->infor.gatruoc,p->infor.gasau, p->infor.chieudai,p->infor.thoigian);
    242.                 p = p->right;
    243.             }
    244.             kc= kc + p1->infor.chieudai;
    245.             tg=tg + p1 ->infor.thoigian;
    246.             printf("\n %20s ->%20s: %7d km %7d gio",p1->infor.gatruoc,
    247.             p1->infor.gasau, p1->infor.chieudai, p1->infor.thoigian);
    248.             printf("\n Tong chieu dai:% 7d Thoi gian:%7d", kc, tg);
    249.             delay(2000);
    250.         }
    251.     }
    252.     else{
    253.         printf("\n Khong di xuoi duoc");
    254.         delay(2000); return;
    255.     }
    256.     if (c=='n'){
    257.         p=Search2(plist, noidi);
    258.         if (p==NULL){
    259.             printf("\n Khong co lo trinh");
    260.             delay(2000);return;
    261.         }
    262.         if (strcmp(noidi, noiden)==0){
    263.                 printf("\n Noi di trung noi den");
    264.                 delay(2000); return;
    265.         }
    266.         p1= Search1(plist, noiden);
    267.         if (p1==NULL){
    268.             printf("\n Noi den khong co thuc");
    269.             delay(2000); return;
    270.         }
    271.         if (Position(plist,p)<=Position(plist,p1) ) {
    272.             kc=tg=0;
    273.             while(p!=p1){
    274.                 kc = kc + p->infor.chieudai;
    275.                 tg = tg + p->infor.thoigian;
    276.                 printf("\n %20s ->%20s: %7d km %7d gio",p->infor.gatruoc,p->infor.gasau, p->infor.chieudai,p->infor.thoigian);
    277.                 p = p->right;
    278.             }
    279.             kc= kc + p1->infor.chieudai;
    280.             tg=tg + p1 ->infor.thoigian;
    281.             printf("\n %20s ->%20s: %7d km %7d gio",p1->infor.gatruoc,p1->infor.gasau, p1->infor.chieudai, p1->infor.thoigian);
    282.             printf("\n Tong chieu dai:% 7d Thoi gian:%7d", kc, tg);
    283.             delay(2000);
    284.         }
    285.     }
    286.     else{
    287.         printf("\n Khong di nguoc duoc");
    288.         delay(2000); return;
    289.     }
    290. }
    291. //=============================================================
    292. void main (void){
    293.     NODEPTR plist,p, p1;
    294.     doan ga;
    295.     char c, noidi[20], noiden[20];
    296.     int vitri;
    297.     Initialize(&plist);
    298.     clrscr();
    299.     textmode(C80);
    300.     textcolor(YELLOW);
    301.     textbackground(BLUE);
    302.     window(1,1,80,25);
    303.     while(1)
    304.  
    305.     {
    306.  
    307.         clrscr();
    308.         printf("\n      Thao tac tren Double link_list");
    309.         printf("\n     ÞÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝ");
    310.         printf("\n QUAN SAT TREN TAU");
    311.  
    312.         printf("\n 1. Them mot doan");
    313.         printf("\n 2. Loai bo mot doan");
    314.         printf("\n 3. Xem lo trinh xuoi");
    315.         printf("\n 4. Xem lo trinh nguoc");
    316.         printf("\n 5. Xem thong tin doan i");
    317.         printf("\n 6. Hieu chinh thong tin doan i");
    318.         printf("\n 7. Bao lo trinh");
    319.         printf("\n Z. Ket thuc chuong trinh");
    320.         printf("\n Lua chon chuc nang tu 1->Z:");
    321.         char ch=toupper(getchar());
    322.         if(ch=='Z') break;
    323.         switch(ch)
    324.         {
    325.             case '1':
    326.                 printf("\n Vi tri can them:");scanf("%d",&vitri);
    327.                 printf("\n Ten ga truoc:"); scanf("%s",ga.gatruoc);
    328.                 printf("\n Ten ga sau:"); scanf("%s",ga.gasau);
    329.                 printf("\n Chieu dai:"); scanf("%d",&ga.chieudai);
    330.                 printf("\n Thoigian:"); scanf("%d",&ga.thoigian);
    331.                 if (vitri==0)
    332.                     Push(&plist,ga);
    333.                 else
    334.                     Insertright(Nodepointer(&plist,vitri-1),ga);
    335.                 break;
    336.             case '2':
    337.                 printf("\n Vi tri:"); scanf("%d",&vitri);
    338.                 p=Nodepointer(&plist,vitri);
    339.                 if (p==NULL){
    340.                     printf("\n Vi tri khong hop le");
    341.                 }
    342.                 else {
    343.                     if (vitri==0) Pop(&plist);
    344.                     else Delnode(&plist,p);
    345.                 }
    346.                 delay(2000); break;
    347.             case '3':
    348.                 printf("\n LO TRINH DUYET XUOI");
    349.                 Righttraverse(&plist);delay(2000);break;
    350.             case '4':
    351.                 printf("\n LO TRINH DUYET NGUOC");
    352.                 Lefttraverse(&plist);delay(2000);break;
    353.             case '5':
    354.                 printf("\n Vi tri:");scanf("%d",&vitri);
    355.                 p = Nodepointer(&plist,vitri);
    356.                 if(p==NULL)
    357.                     printf("\n Vi tri khong hop le");
    358.                 else {
    359.                     printf("\n DOAN:%d Tu:%s Den:%s Chieu dai:%d Thoigian :%d",vitri, p->infor.gatruoc, p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    360.                 }
    361.                 delay(2000); break;
    362.             case '6':
    363.                 printf("\n Vi tri:"); scanf("%d",&vitri);
    364.                 p=Nodepointer(&plist, vitri);
    365.                 if(p==NULL)
    366.                     printf("\n Vi tri khong hop le");
    367.                 else {
    368.                     printf("\n DOAN:%d Tu:%s Den:%s Chieu dai:%d Thoigian :%d",vitri, p->infor.gatruoc, p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    369.             printf("\n Ten ga truoc:%s"); scanf("%s",ga.gatruoc);
    370.                     printf("\n Ten ga sau:%s"); scanf("%s",ga.gasau);
    371.                     printf("\n Chieu dai:%d"); scanf("%d",&ga.chieudai);
    372.                     printf("\n Thoi gian:%d"); scanf("%d",&ga.thoigian);
    373.                 }
    374.                 delay(2000); break;
    375.             case '7':
    376.                 printf("\n Di xuoi:x Di nguoc: n:");c=getche();
    377.                 printf("\n Noi di:");scanf("%s",noidi);
    378.                 printf("\n Noi den:"); scanf("%s", noiden);
    379.                 Message(&plist, noidi, noiden, c);
    380.                 delay(2000); break;
    381.         }
    382.     }
    383. }

  2. #2
    Ngày gia nhập
    09 2006
    Bài viết
    2

    anh Sơn ơi giải thích cho em ý nghĩa của khai báo này với:NODEPTR *plist

  3. #3
    Ngày gia nhập
    09 2006
    Bài viết
    62

    Mình chạy thử trong VC++ thì thấy báo đúng 1 lỗi là thư viện alloc.h bị lỗi
    Click here for more Info of Cviet-Translator-Group

    ! be thankful for small blessings...

  4. #4
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Cái này chạy tốt nhưng bạn nói là chạy sai nên chẳng hiểu sai ở đâu (cái này người trong cuộc mới hiểu được) nên chẳng biết thế nào mà lần.

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    Question Quản lí lộ trình tàu hỏa đã sửa lỗi

    Trích dẫn Nguyên bản được gửi bởi hungvuquoc
    anh Sơn ơi giải thích cho em ý nghĩa của khai báo này với:NODEPTR *plist
    Thao tác này là gọi một con trỏ plist để trỏ tới con trỏ cấu trúc NODEPTR.
    Thế thôi!

    Mà này? Sao biết tên tui!

    May quá đã sửa được lỗi rồi.
    Post lên cho anh em tham khảo:
    C Code:
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #include<conio.h>
    4. #include<dos.h>
    5. #include<string.h>
    6. #include <math.h>
    7. #include<alloc.h>
    8. #include<ctype.h>
    9.  
    10. #define     TRUE    1
    11. #define        FALSE    0
    12. /* Cau truc thong tin ve doan tau */
    13. typedef struct {
    14.     char gatruoc[20];
    15.     char gasau[20];
    16.     int chieudai;
    17.     int thoigian;
    18. } doan;
    19. /* cau truc 1 nut trong danh sach lien ket kep*/
    20. typedef struct node{
    21.     doan infor;
    22.     struct node *left,*right;
    23. };
    24. typedef struct node *NODEPTR;
    25. /* cap phat 1 nut*/
    26. NODEPTR Getnode(void){
    27.     NODEPTR p;
    28.     p =(NODEPTR) malloc(sizeof(struct node));
    29.     return(p);
    30. }
    31. /* giai phong 1 nut*/
    32. void Freenode( NODEPTR p){
    33.     free(p);
    34. }
    35. /* khoi dong danh sach*/
    36. void Init(NODEPTR *plist){
    37.     *plist=NULL;
    38. }
    39. /* kiem tra tinh rong*/
    40. int Empty(NODEPTR *plist){
    41.     if (*plist==NULL)
    42.         return(TRUE);
    43.     return(FALSE);
    44. }
    45. /* xac dinh so nut*/
    46. int Sonut(NODEPTR *plist){
    47.     NODEPTR p;int n;
    48.     p=*plist;n=0;
    49.     while(p!=NULL){
    50.         p=p->right;
    51.         n++;
    52.     }
    53.     return(n);
    54. }
    55. /* xac dinh vi tri con tro dang o vi tri thu i trong danh sach*/
    56. NODEPTR Nodepointer(NODEPTR *plist,int i){
    57.     NODEPTR p;int vitri;
    58.     p=*plist;vitri=0;
    59.     while (p!=NULL && vitri<i){
    60.         p=p->right;
    61.         vitri++;
    62.     }
    63.     return(p);
    64. }
    65. /* xax dinh vi tri nut p trong danh sach*/
    66. int Position(NODEPTR *plist, NODEPTR p){
    67.     int vitri; NODEPTR q;
    68.     q = *plist;vitri=0;
    69.     while (q!=NULL && q!=p){
    70.         q = q->right;
    71.         vitri++;
    72.     }
    73.     if (q==NULL)
    74.         return(-1);
    75.     return(vitri);
    76. }
    77. /* them 1 nut moi vao dau danh sach*/
    78. void Push(NODEPTR *plist, doan x){
    79.     NODEPTR p;p = Getnode();
    80.     p ->infor = x;
    81.     if(*plist==NULL){
    82.         p->left=NULL;
    83.         p->right=NULL;
    84.         *plist=p;
    85.     }
    86.     else {
    87.         p->right = *plist;
    88.         (*plist)->left=p;
    89.         p->left=NULL;
    90.         *plist=p;
    91.     }
    92. }
    93. /* them nut moi vao sau nut p */
    94. void Insertright(NODEPTR p, doan x){
    95.     NODEPTR q,r;
    96.     if (p==NULL){
    97.         printf("\n Nut khong co thuc");
    98.         delay(2000);return;
    99.     }
    100.     else {
    101.         q=Getnode();
    102.         q->infor=x;
    103.         r=p->right;
    104.         r->left=q;
    105.         q->right=r;
    106.         q->left=p;
    107.         p->right=q;
    108.     }
    109. }
    110. /* them nut moi vao truoc nut p*/
    111. void Insertleft(NODEPTR *plist, NODEPTR p, doan x){
    112.     NODEPTR q, r;
    113.     if (p==NULL) {
    114.         printf("\n Node khong co thuc");
    115.         delay(2000); return;
    116.     }
    117.     if (p==*plist)
    118.         Push(plist,x);
    119.     else {
    120.         q=Getnode();
    121.         q->infor=x;
    122.         r=p->left;
    123.         r->right=q;
    124.         q->left=r;
    125.         q->right=p;
    126.         p->left=q;
    127.     }
    128. }
    129. /* xao nut o dau danh sach*/
    130. doan Pop(NODEPTR *plist){
    131.     NODEPTR p;doan x;
    132.     if (Empty(plist)){
    133.         printf("\n Danh sach rong");
    134.         delay(2000);
    135.     }
    136.     else {
    137.         p = *plist;
    138.         x=p->infor;
    139.         if ((*plist)->right==NULL)
    140.             *plist=NULL;
    141.         else{
    142.              *plist=p->right;
    143.              (*plist)->left=NULL;
    144.         }
    145.         Freenode(p);
    146.     }
    147.     return(x);
    148. }
    149. /* xoa nut co con tro la p trong danh sach*/
    150. doan Delnode(NODEPTR *plist, NODEPTR p) {
    151.     NODEPTR q, r;doan x;
    152.     if (p==NULL){
    153.         printf("\n Node khong co thuc");
    154.         delay(2000);return(x);
    155.     }
    156.     if (*plist==NULL){
    157.         printf("\n Danh sach rong");
    158.         delay(2000);
    159.     }
    160.     else {
    161.         x=p->infor;
    162.         q = p->left;
    163.         r = p->right;
    164.         r ->left = q;
    165.         q ->right=r;
    166.         Freenode(p);
    167.     }
    168.     return(x);
    169. }
    170. /* duyet danh sach tu trai sang phai */
    171. void Righttraverse(NODEPTR *plist){
    172.     NODEPTR p; int stt;
    173.     if (Empty(plist)){
    174.         printf("\n Khong co doan nao");
    175.         delay(2000); return;
    176.     }
    177.     p = *plist;    stt=0;
    178.     while (p!=NULL){
    179.         printf ("\n %5d %20s %20s %7d%7d", stt++,p->infor.gatruoc,
    180.         p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    181.         p=p->right;
    182.     }
    183. }
    184. /* duyet danh sach tu phai sang trai*/
    185. void Lefttraverse(NODEPTR *plist){
    186.     NODEPTR p;int stt;
    187.     if (Empty(plist)){
    188.         printf("\n Khong co doan nao");
    189.         delay(2000); return;
    190.     }
    191.     stt =0;p = Nodepointer(plist,Sonut(plist)-1);
    192.     while (p!=NULL){
    193.         printf("\n %5d %20s%20s%7d%7d", stt++, p->infor.gasau,
    194.         p->infor.gatruoc, p->infor.chieudai, p->infor.thoigian);
    195.         p = p->left;
    196.     }
    197. }
    198. /* thong tin ve ga truoc */
    199. NODEPTR Search1(NODEPTR *plist, char x[]){
    200.     NODEPTR p=*plist;
    201.     while (strcmp(p->infor.gatruoc,x)!=0 && p!=NULL)
    202.         p = p->right;
    203.     return(p);
    204. }
    205. /* thong tin ve ga sau */
    206. NODEPTR Search2(NODEPTR *plist, char x[]){
    207.     NODEPTR p=*plist;
    208.     while (strcmp(p->infor.gasau,x)!=0 && p!=NULL)
    209.         p = p->right;
    210.     return(p);
    211. }
    212. /* loai bo toan bo cac nut cua danh sach*/
    213. void Clearlist(NODEPTR *plist){
    214.     while (*plist!=NULL){
    215.         Pop(plist);
    216.     }
    217. }
    218. /* Bao lo trinh cac tuyen */
    219. void Message(NODEPTR *plist, char noidi[], char noiden[], char c){
    220.     NODEPTR p, p1;int kc, tg;
    221.     if (c=='x'){
    222.         p=Search1(plist, noidi);
    223.         if (p==NULL){
    224.             printf("\n Khong co lo trinh");
    225.             delay(2000);return;
    226.         }
    227.         if (strcmp(noidi, noiden)==0){
    228.                 printf("\n Noi di trung noi den");
    229.                 delay(2000); return;
    230.         }
    231.         p1= Search2(plist, noiden);
    232.         if (p1==NULL){
    233.             printf("\n Noi den khong co thuc");
    234.             delay(2000); return;
    235.         }
    236.         if (Position(plist,p)<=Position(plist,p1) ) {
    237.             kc=tg=0;
    238.             while(p!=p1){
    239.                 kc = kc + p->infor.chieudai;
    240.                 tg = tg + p->infor.thoigian;
    241.                 printf("\n %20s ->%20s: %7d km %7d gio",p->infor.gatruoc,p->infor.gasau, p->infor.chieudai,p->infor.thoigian);
    242.                 p = p->right;
    243.             }
    244.             kc= kc + p1->infor.chieudai;
    245.             tg=tg + p1 ->infor.thoigian;
    246.             printf("\n %20s ->%20s: %7d km %7d gio",p1->infor.gatruoc,
    247.             p1->infor.gasau, p1->infor.chieudai, p1->infor.thoigian);
    248.             printf("\n Tong chieu dai:% 7d Thoi gian:%7d", kc, tg);
    249.             delay(2000);
    250.         }
    251.     }
    252.     else{
    253.         printf("\n Khong di xuoi duoc");
    254.         delay(2000); return;
    255.     }
    256.     if (c=='n'){
    257.         p=Search2(plist, noidi);
    258.         if (p==NULL){
    259.             printf("\n Khong co lo trinh");
    260.             delay(2000);return;
    261.         }
    262.         if (strcmp(noidi, noiden)==0){
    263.                 printf("\n Noi di trung noi den");
    264.                 delay(2000); return;
    265.         }
    266.         p1= Search1(plist, noiden);
    267.         if (p1==NULL){
    268.             printf("\n Noi den khong co thuc");
    269.             delay(2000); return;
    270.         }
    271.         if (Position(plist,p)<=Position(plist,p1) ) {
    272.             kc=tg=0;
    273.             while(p!=p1){
    274.                 kc = kc + p->infor.chieudai;
    275.                 tg = tg + p->infor.thoigian;
    276.                 printf("\n %20s ->%20s: %7d km %7d gio",p->infor.gatruoc,p->infor.gasau, p->infor.chieudai,p->infor.thoigian);
    277.                 p = p->right;
    278.             }
    279.             kc= kc + p1->infor.chieudai;
    280.             tg=tg + p1 ->infor.thoigian;
    281.             printf("\n %20s ->%20s: %7d km %7d gio",p1->infor.gatruoc,p1->infor.gasau, p1->infor.chieudai, p1->infor.thoigian);
    282.             printf("\n Tong chieu dai:% 7d Thoi gian:%7d", kc, tg);
    283.             delay(2000);
    284.         }
    285.     }
    286.     else{
    287.         printf("\n Khong di nguoc duoc");
    288.         delay(2000); return;
    289.     }
    290. }
    291. //=============================================================
    292. void main (void){
    293.     NODEPTR plist,p, p1;
    294.     doan ga;
    295.     char c, noidi[20], noiden[20];
    296.     int vitri;
    297.     Init(&plist);
    298.     clrscr();
    299.     textmode(C80);
    300.     textcolor(YELLOW);
    301.     textbackground(BLUE);
    302.     window(1,1,80,25);
    303.     while(1)
    304.  
    305.     {
    306.  
    307.         clrscr();
    308.         printf("\n      Thao tac tren Double link_list");
    309.         printf("\n     ÞÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝ");
    310.         printf("\n DUA TREN THONG TIN VE GA TAU");
    311.  
    312.         printf("\n 1. Them mot doan duong voi thong tin ga truoc va ga sau voi k/c va tg");
    313.         printf("\n 2. Loai bo mot doan duong");
    314.         printf("\n 3. Xem lo trinh xuoi");
    315.         printf("\n 4. Xem lo trinh nguoc");
    316.         printf("\n 5. Xem thong tin doan i");
    317.         printf("\n 6. Hieu chinh thong tin doan i");
    318.         printf("\n 7. Bao lo trinh");
    319.         printf("\n Z. Ket thuc chuong trinh");
    320.         printf("\n Lua chon chuc nang tu 1->Z:");
    321.         char ch=toupper(getchar());
    322.         if(ch=='Z') break;
    323.         switch(ch)
    324.         {
    325.             case '1':
    326.                 printf("\n Vi tri can them:");scanf("%d",&vitri);
    327.                 printf("\n Ten ga truoc:"); scanf("%s",ga.gatruoc);
    328.                 printf("\n Ten ga sau:"); scanf("%s",ga.gasau);
    329.                 printf("\n Chieu dai:"); scanf("%d",&ga.chieudai);
    330.                 printf("\n Thoigian:"); scanf("%d",&ga.thoigian);
    331.                 if (vitri==0)
    332.                     Push(&plist,ga);
    333.                 else
    334.                     Insertright(Nodepointer(&plist,vitri-1),ga);
    335.                 break;
    336.             case '2':
    337.                 printf("\n Vi tri:"); scanf("%d",&vitri);
    338.                 p=Nodepointer(&plist,vitri);
    339.                 if (p==NULL){
    340.                     printf("\n Vi tri khong hop le");
    341.                 }
    342.                 else {
    343.                     if (vitri==0) Pop(&plist);
    344.                     else Delnode(&plist,p);
    345.                 }
    346.                 delay(2000); break;
    347.             case '3':
    348.                 printf("\n LO TRINH DUYET XUOI");
    349.                 Righttraverse(&plist);delay(4000);break;
    350.             case '4':
    351.                 printf("\n LO TRINH DUYET NGUOC");
    352.                 Lefttraverse(&plist);delay(4000);break;
    353.             case '5':
    354.                 printf("\n Vi tri:");scanf("%d",&vitri);
    355.                 p = Nodepointer(&plist,vitri);
    356.                 if(p==NULL)
    357.                     printf("\n Vi tri khong hop le");
    358.                 else {
    359.                     printf("\n DOAN:%d Tu:%s Den:%s Chieu dai:%d Thoigian :%d",vitri, p->infor.gatruoc, p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    360.                 }
    361.                 delay(2000); break;
    362.             case '6':
    363.                 printf("\n Vi tri:"); scanf("%d",&vitri);
    364.                 p=Nodepointer(&plist, vitri);
    365.                 if(p==NULL)
    366.                     printf("\n Vi tri khong hop le");
    367.                 else {
    368.                     printf("\n DOAN:%d Tu:%s Den:%s Chieu dai:%d Thoigian :%d",vitri, p->infor.gatruoc, p->infor.gasau,p->infor.chieudai,p->infor.thoigian);
    369.             printf("\n Ten ga truoc:%s"); scanf("%s",ga.gatruoc);
    370.                     printf("\n Ten ga sau:%s"); scanf("%s",ga.gasau);
    371.                     printf("\n Chieu dai:%d"); scanf("%d",&ga.chieudai);
    372.                     printf("\n Thoi gian:%d"); scanf("%d",&ga.thoigian);
    373.                 }
    374.                 delay(2000); break;
    375.             case '7':
    376.                 printf("\n Di xuoi:x Di nguoc: n:");c=getche();
    377.                 printf("\n Noi di:");scanf("%s",noidi);
    378.                 printf("\n Noi den:"); scanf("%s", noiden);
    379.                 Message(&plist, noidi, noiden, c);
    380.                 delay(2000); break;
    381.         }
    382.     }
    383. }

Các đề tài tương tự

  1. Đồ Án Quản Lý Cửa Hàng Cầm Đồ Viết Bằng C#
    Gửi bởi hacdaoaulamq trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 19-03-2013, 11:49 AM
  2. Viết chương trình quản lý sinh viên viết bằng C++ bắt đầu từ đâu?
    Gửi bởi hanglethi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-06-2011, 02:42 PM
  3. Trả lời: 16
    Bài viết cuối: 29-11-2010, 03:32 PM
  4. Quản Lý Cửa Hàng Điện Máy Viết Bằng C#
    Gửi bởi hacdaoaulamq trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 6
    Bài viết cuối: 31-12-2009, 02:34 PM
  5. Chương trình quản lý hàng hóa viết bằng C | Hàm thêm hàng hóa viết làm sao?
    Gửi bởi rong3sao trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 23-05-2009, 06:09 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn