Trang 2 trên tổng số 4 Đầu tiênĐầu tiên 1234 Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 36 kết quả

Đề tài: Danh sách liên kết đơn - Lý thuyết cơ bản và cách triển khai

  1. #11
    Ngày gia nhập
    03 2012
    Bài viết
    8

    Mặc định về bài danh sach lien kết của popo

    bài code của popo viết khá hay nhưng nếu không in ra thì làm sao biết được kết quả.
    Với cho mình hỏi cái
    hàm insertafter sau khi chèn xong sao lại trả về con trỏ chèn vào mà không trả về con trỏ danh sách liên kết.
    Và nếu muốn in ra thì phải làm sao?

  2. #12
    Ngày gia nhập
    05 2012
    Bài viết
    1

    cho em hỏi cái này ạ! em cài Visual 2010, em copy đoạn code của trên vào máy thì nó báo lỗi :
    "cannot open file source alloc.h " ngoài ra thì những câu lệnh như delay, clrscr cũng ko hoạt động ạ

  3. #13
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi toanlove371 Xem bài viết
    cho em hỏi cái này ạ! em cài Visual 2010, em copy đoạn code của trên vào máy thì nó báo lỗi :
    "cannot open file source alloc.h " ngoài ra thì những câu lệnh như delay, clrscr cũng ko hoạt động ạ
    alloc.h bạn sửa thành malloc.h xem thế nào
    Còn delay sửa thành Sleep (1000); clrscr sửa thành system ("cls");
    Thêm thư viện windows.h nữa nhé

  4. #14
    Ngày gia nhập
    07 2012
    Bài viết
    5

    C Code:
    1. struct  node {
    2.         int infor;
    3.         struct node *next;
    4.     };
    5. typedef struct node *NODEPTR;

    Ở đây NODEPTR là một kiểu dữ liệu, không phải là một biến con trỏ, nên khai báo là:

    C Code:
    1. typedef struct node* NODEPTR;

    Các bạn lưu ý là: biến plist trong hàm main là biến con trỏ cấp 1, còn biến plist làm tham số hình thức trong các hàm là con trỏ cấp 2. Nếu bạn nào đọc không kỹ sẽ dễ gây nhầm lẫn.
    Đã được chỉnh sửa lần cuối bởi bkdn : 05-09-2012 lúc 09:46 AM.

  5. #15
    Ngày gia nhập
    04 2012
    Bài viết
    9

    ^
    Hai cái đấy khác nhau chổ nào hả bạn? =.=
    I'm doicanhden. ~>"<~ Nếu thấy nick này onl thì biết là tôi vừa bị ban vì cái lý do nào đấy. :[

  6. #16
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Mặc định Danh sách liên kết đơn - Lý thuyết cơ bản và cách triển khai

    Không biết các bác thế nào?

    Em mất hơn một tháng (chính xác là 35 ngày) mới hiểu được mớ lý thuyết và cách cài đặt của bác chủ thớt.

    Tiếp thu chậm chạp thế này thấy bắt đầu hơi nản rùi các bác ơi

  7. #17
    Ngày gia nhập
    03 2012
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi vipbk09 Xem bài viết
    Không biết các bác thế nào?

    Em mất hơn một tháng (chính xác là 35 ngày) mới hiểu được mớ lý thuyết và cách cài đặt của bác chủ thớt.

    Tiếp thu chậm chạp thế này thấy bắt đầu hơi nản rùi các bác ơi
    Nếu đã hơi nản rồi thì cố lên tí để nản luôn đi. Bỏ cuộc đi

  8. #18
    Ngày gia nhập
    05 2010
    Bài viết
    29

    C Code:
    1. void Push_Bottom( NODEPTR *plist, int x) {
    2.     NODEPTR p, q;
    3.     p= Getnode(); //
    4.     p->infor = x;
    5.     q = *plist;
    6.     while (q-> next != NULL)
    7.         q = q -> next;
    8.    
    9.     q -> next = p;
    10.     p ->next = NULL;
    11. }

    Em nghĩ hàm trên có thể sửa lại như sau:
    C Code:
    1. void Push_Bottom( NODEPTR *plist, int x) {
    2.     p= Getnode(); //
    3.     p->x=x;
    4.     if(*plist==NULL)
    5.      {
    6.        p->next=NULL;
    7.        *plist=p;
    8.      }
    9.     else
    10.      {
    11.        p->next=NULL;
    12.        (*plist)->next=p;
    13.        *plist=p;
    14.      }
    15. }

  9. #19
    Ngày gia nhập
    06 2012
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi PoPoPoPo Xem bài viết
    Chúng ta xét 1 ứng dụng đơn giản của danh sách liên kết đơn sau;
    Chương trình quản lí sinh viên với dạng đơn giản chỉ gồm mã SV và họ tên

    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. #define TRUE 1
    9. #define FALSE 0
    10. typedef struct {
    11.     int masv;
    12.     char hoten[20];
    13. } sinhvien;
    14. typedef struct node{
    15.     sinhvien infor;
    16.     struct node *next;
    17. } *NODEPTR;
    18. void Initialize(NODEPTR *plist){
    19.     *plist=NULL;
    20. }
    21. NODEPTR Getnode(void){
    22.     NODEPTR p;
    23.     p=(NODEPTR) malloc(sizeof(struct node));
    24.     return(p);
    25. }
    26. void Freenode(NODEPTR p){
    27.     free(p);
    28. }
    29. int Emptynode(NODEPTR *plist){
    30.     if(*plist==NULL)
    31.         return(TRUE);
    32.     return(FALSE);
    33. }
    34. NODEPTR Inserttop(NODEPTR *plist, sinhvien x){
    35.     NODEPTR p;
    36.     p=Getnode();
    37.     p->infor=x;
    38.     if(Emptynode(plist)){
    39.         p->next=NULL;
    40.         *plist=p;
    41.         return(p);
    42.     }
    43.     p->next=*plist;
    44.     *plist=p;
    45.     return(p);
    46. }
    47. int Bottomnode(NODEPTR *plist){
    48.     int i; NODEPTR p;
    49.     if(Emptynode(plist))
    50.         return(-1);
    51.     p=*plist;i=0;
    52.     while(p!=NULL){
    53.         i=i+1;
    54.         p=p->next;
    55.     }
    56.     return(i);
    57. }
    58. NODEPTR Insertbottom(NODEPTR *plist, sinhvien x){
    59.     NODEPTR p, q;int n,i;
    60.     n=Bottomnode(plist);
    61.     if(n==-1){
    62.         Inserttop(plist,x);
    63.         return(*plist);
    64.     }
    65.     p=*plist;i=0;q=Getnode();q->infor=x;
    66.     while(i<n-1){
    67.         p=p->next;
    68.         i=i+1;
    69.     }
    70.     p->next=q;q->next=NULL;
    71.     delay(2000);return(q);
    72. }
    73. NODEPTR Insertafter(NODEPTR *plist, sinhvien x, int n){
    74.     NODEPTR p,q; int i;
    75.     if(n<0){
    76.         printf("\n Vi tri khong hop le");
    77.         delay(2000);return(NULL);
    78.     }
    79.     p=*plist;i=0;
    80.     while(p!=NULL && i<n){
    81.         i=i+1;
    82.         p=p->next;
    83.     }
    84.     if(p==NULL){
    85.         printf("\n Vi tri khong hop le");
    86.         delay(2000); return(NULL);
    87.     }
    88.     q=Getnode();q->infor=x;
    89.     q->next= p->next;
    90.     p->next=q;
    91.     return(q);
    92. }
    93. void Deltop(NODEPTR *plist){
    94.     NODEPTR p, q;
    95.     p=*plist;
    96.     if(Emptynode(plist)){
    97.         printf("\n Danh sach rong");
    98.         delay(2000); return;
    99.     }
    100.     q=p;p=p->next;*plist=p;
    101.     printf("\n Node bi loai bo");
    102.     printf("\n%-5d%-20s",q->infor.masv, q->infor.hoten);
    103.     delay(2000);Freenode(q);
    104. }
    105. void Delbottom(NODEPTR *plist){
    106.     NODEPTR p,q; int i,n;
    107.     n=Bottomnode(plist);
    108.     if(n==-1){
    109.         printf("\n Danh sach rong");
    110.         delay(2000); return;
    111.     }
    112.     if(n==1){
    113.         Deltop(plist);return;
    114.     }
    115.     p=*plist;i=0;
    116.     while(i<n-2){
    117.         p=p->next;
    118.         i=i+1;
    119.     }
    120.     q=p->next;p->next=NULL;
    121.     printf("\n Node duoc loai bo");
    122.     printf("\n %-5d%-20s",q->infor.masv,q->infor.hoten);
    123.     delay(2000); Freenode(q);
    124. }
    125. void Delcurrent(NODEPTR *plist, int n){
    126.     NODEPTR p,q; int i;
    127.     if(Emptynode(plist)){
    128.         printf("\n Danh sach rong");
    129.         delay(2000);return;
    130.     }
    131.     if(n==0){
    132.         Deltop(plist); return;
    133.     }
    134.     p=*plist; i=0;
    135.     while(p!=NULL && i<n-1){
    136.         i=i+1;
    137.         p=p->next;
    138.     }
    139.     if(p->next==NULL){
    140.         printf("\n Node khong hop le");
    141.         delay(2000); return;
    142.     }
    143.     q=p->next;p->next=q->next;
    144.     printf("\n Node duoc loai bo");
    145.     printf("\n %-5d%-20s",q->infor.masv, q->infor.hoten);
    146.     delay(2000); Freenode(q);
    147. }
    148. void Travenode(NODEPTR *plist){
    149.     NODEPTR p;
    150.     if(Emptynode(plist)){
    151.         printf("\n Danh sach rong");
    152.         delay(2000);return;
    153.     }
    154.     p=*plist;
    155.     while(p!=NULL){
    156.         printf("\n %-5d%-20s",p->infor.masv, p->infor.hoten);
    157.         p=p->next;
    158.     }
    159.     delay(2000);
    160. }
    161. void Sortnode(NODEPTR *plist){
    162.     NODEPTR p,q;sinhvien temp;
    163.     for(p=*plist; p!=NULL; p=p->next){
    164.         for(q=p->next; q!=NULL; q=q->next){
    165.             if(p->infor.masv>q->infor.masv){
    166.                 temp=p->infor; p->infor=q->infor;
    167.                 q->infor=temp;
    168.             }
    169.         }
    170.     }
    171.     printf("\n Danh sach duoc sap xep");
    172.     for(p=*plist; p!=NULL; p=p->next){
    173.         printf("\n %-5d%-20s",p->infor.masv,p->infor.hoten);
    174.     }
    175.     delay(2000);
    176. }
    177. void Searchnode(NODEPTR *plist, int masv){
    178.     NODEPTR p;
    179.     p=*plist;
    180.     while(p!=NULL && p->infor.masv!=masv)
    181.         p=p->next;
    182.     if(p==NULL)
    183.         printf("\n Node khong ton tai");
    184.     else {
    185.         printf("\n Node can tim");
    186.         printf("\n %-5d%-20s",p->infor.masv,p->infor.hoten);
    187.     }
    188.     delay(2000);
    189. }
    190.  
    191. void Thuchien(void){
    192.     NODEPTR plist; sinhvien x,y;int vitri; char c;
    193.     Initialize(&plist);
    194.     do {
    195.         clrscr();
    196.         printf("\n THAO TAC VOI SINGLE LINK LIST");
    197.         printf("\n 1- Them node dau danh sach");
    198.         printf("\n 2- Them node cuoi danh sach");
    199.         printf("\n 3- Them node giua danh sach");
    200.         printf("\n 4- Loai bo node dau danh sach");
    201.         printf("\n 5- Loai bo node cuoi danh sach");
    202.         printf("\n 6- Loai node giua danh sach");
    203.         printf("\n 7- Duyet danh sach");
    204.         printf("\n 8- Sap xep danh sach");
    205.         printf("\n 9- Tim kiem danh sach");
    206.         printf("\n 0- Tro ve");
    207.         c=getch();
    208.         switch(c){
    209.             case '1':
    210.                 printf("\n Ma sinh vien:");scanf("%d", &x.masv);
    211.                 fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
    212.                 Inserttop(&plist,x); break;
    213.             case '2':
    214.                 printf("\n Ma sinh vien:");scanf("%d", &x.masv);
    215.                 fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
    216.                 Insertbottom(&plist,x); break;
    217.             case '3':
    218.                 printf("\n Vi tri tren:"); scanf("%d",&vitri);
    219.                 printf("\n Ma sinh vien:");scanf("%d", &x.masv);
    220.                 fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
    221.                 Insertafter(&plist,x,vitri-1); break;
    222.             case '4': Deltop(&plist);break;
    223.             case '5': Delbottom(&plist);break;
    224.             case '6':
    225.                 fflush(stdin);printf("\n Vi tri loai bo:");
    226.                 scanf("%d",&vitri);
    227.                 Delcurrent(&plist,vitri-1);break;
    228.             case '7': Travenode(&plist); break;
    229.             case '8': Sortnode(&plist);break;
    230.             case '9':
    231.                 fflush(stdin);printf("\n Ma sinh vien:");
    232.                 scanf("%d",&vitri);
    233.                 Searchnode(&plist, vitri);break;
    234.         }
    235.     } while(c!='0');
    236. }
    237. void main(void){
    238.     Thuchien();
    239. }
    bác ơi em chạy cái này bằng code::blook nó báo lỗi cái thư viện <alloc.h>
    giúp em với

  10. #20
    Ngày gia nhập
    03 2013
    Nơi ở
    Hà Nội
    Bài viết
    3

    Mặc định Các bác cho em hỏi bài này với :(

    Mình mới học về lập trình, ngồi làm bài này mà không chạy được. Các bác xem rồi chỉ hộ mình lỗi sai với ạ. Thanks all!
    Đây là bài sinh 1000000 phần tử lưu vào danh sách lk đơn. in vị trí phần tử lớn nhất :(
    Code:
    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include<time.h>
    
    struct Node
    {
        int i,data;
        struct Node * pNext;
    };
    
    int main()
    {
        struct Node *pHead=NULL;
        struct Node *p, *pLast;
        int k=0;
        srand(time(NULL));
    	for((p->i)=0;(p->i)<1000000;(p->i)++)
    	{
            p=(struct Node*)malloc(sizeof( struct Node));
    		p->data= rand();
    	    p->pNext=NULL;
            if(pHead==NULL)
            {
                pHead=p;
                pLast=p;
            }
            else
            {
                pLast->pNext=p;
                pLast=p;
            }
        }
        
        // tim vi tri cac phan tu lon nhat
        struct Node *pMax=pHead;
        p=pMax->pNext;
        while(p!=NULL)
        {
            if(p->data > pMax->data)
            pMax=p;
            p=p->pNext;
        }
        printf("\n Vi tri phan tu co gia tri lon nhat bang %d la: ",pMax->data);
        
        system("pause");
        return 0;
    }

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

  1. cách sử dụng danh sách liên kết khai báo cây nhị phân trong C++
    Gửi bởi huunhan577 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 21-03-2013, 09:43 AM
  2. Con trỏ trên C Các cách khai báo con trỏ trong danh sách liên kết đơn?
    Gửi bởi vandt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 11-09-2012, 09:39 AM
  3. Định nghĩa kiểu dữ liệu khi khai báo cấu trúc danh sách liên kết đơn
    Gửi bởi nguyenquanghung trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 13-05-2011, 12:39 AM
  4. Nhập và xuất danh sách liên kết lồng danh sách liên kết?
    Gửi bởi nvluong_it trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-04-2011, 11:30 AM
  5. khai báo danh sách liên kết đơn
    Gửi bởi HaNguyen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 19-10-2010, 05:14 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