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

Đề tài: Lập trình C | Tìm phần tử trong danh sách liên kết đơn

  1. #1
    Ngày gia nhập
    06 2008
    Bài viết
    51

    Mặc định Lập trình C | Tìm phần tử trong danh sách liên kết đơn

    Các bác cho em hỏi hoạt động của hàm này như thế nào? Khi hoạt động nó sẽ hiển thị như thế nào> em cảm ơn các bác.

  2. #2
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    câu hỏi của bạn không rõ ràng gì cả bạn phải nói cụ thể ra đó là cái ji thì mọi người mới giúp đựoc bạn chứ mình cũng vừa học xog link list nên có thể giúp bạn dc
    u never know

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    13

    Người hỏi mà còn không biết mình đang hỏi cái gì nữa >"<!
    Muốn có thắng lợi, phải có hy sinh

  4. #4
    Ngày gia nhập
    06 2008
    Bài viết
    51

    em hỏi cái đoạn code về tìm phần tử trong DSLK đơn, các bác đều có sách rồi nên em nghĩ ko cần phải viết nữa vì chắc là cũng giống nhau thôi (trừ khi em vô phúc có nhầm quyển sách sai, em nói thật là mấy quyển em có rất nhiều lỗi sai về cơ bản). Điều em hỏi là khi chạy màn hình thì nó sẽ in ra cái jì, chẳng nhẽ vd:
    nhap pt can tim : 5
    pt can tim la: 5 (neu ko co thi: ko tim thay pt nay)
    em thấy hơi vô lý nên hỏi vì phần này chỉ được gợi ý chứ ko được dạy trực tiếp.

  5. #5
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    bạn thử post code lên cho mọi người xem nào chứ nói ko ntn thì bó tay
    còn đây là code mình làm từ hồi học link list bạn có thể lấy tham khảo
    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    #include "stdlib.h"
    
    struct thongtin
    	{
    		char hoten[30];
    		char masv[10];
    		char diachi[50];
    		float dcb;
    		float dcn;
    		float dtb;
    	};
    struct sv
    	{
    		struct thongtin infor;
    		sv *next;
    	};
    struct listsv
    	{
    		sv *head;
    		sv *tail;
    	};
    
    
    void nhapds(listsv &q)
    	{
    		sv *p;
    		float dcb;
    		float dcn;
    		float dtb;
    		char hoten[30];
    		q.head=NULL;
    		while(1)
    		{
    			printf("Nhap vao ho ten sinh vien(an enter de ket thuc): ");
    			gets(hoten);
    			if(hoten[0]==0)break;
    			if(q.head==NULL)
    				{
    					p=(sv*)malloc(sizeof(sv));
    					q.head=p;
    					q.tail=p;
    				}
    			else
    				{
    					p->next=(sv*)malloc(sizeof(sv));
    					p=p->next;
    				}
    			strcpy(p->infor.hoten,hoten);
    
    			printf("Nhap vao ma sinh vien: ");
    			fflush(stdin);
    			gets(p->infor.masv);
    
    			printf("Nhap vao noi o sinh vien: ");
    			fflush(stdin);
    			gets(p->infor.diachi);
    			strupr(p->infor.diachi);
    
    			printf("Nhap vao diem can ban cua sinh vien: ");
    			scanf("%f%*c",&dcb);
    			p->infor.dcb=dcb;
    
    			printf("Nhap vao diem chuyen nghanh cua sinh vien:");
    			scanf("%f%*c",&dcn);
    			p->infor.dcn=dcn;
    
    			p->infor.dtb=float((p->infor.dcb)+p->infor.dcn)/2;
    
    			q.tail=p;
    			p->next=NULL;
    		}
    		p=q.head;
    
    	}
    
    
    void inds(listsv &q)
    	{
    		sv *p;
    		p=q.head;
    		while(p!=NULL)
    			{
    				printf("\nHoten sinh vien: %s --- Ma sinh vien: %s",p->infor.hoten,p->infor.masv);
    				printf("\nDia chi: %s",p->infor.diachi);
    				printf("\nDiem chuyen nghanh: %.2f  --- Diem can ban: %.2f --- Diem trung binh: %.2f ",p->infor.dcn,p->infor.dcb,p->infor.dtb);
    				printf("\n\t\t---------------------------------");
    				p=p->next;
    			}
    	}
    
    
    void intt(listsv &q)
    	{
    		sv *p;
    		p=q.head;
    		while(p!=NULL)
    			{
    				if(strcmp(p->infor.hoten,"Hoa")==0)
    					{
    						printf("\nHoten sinh vien: %s --- Ma sinh vien: %s",p->infor.hoten,p->infor.masv);
    						printf("\nDia chi: %s",p->infor.diachi);
    						printf("\nDiem chuyen nghanh: %.2f  --- Diem can ban: %.2f --- Diem trung binh: %.2f ",p->infor.dcn,p->infor.dcb,p->infor.dtb);
    						printf("\n\t\t---------------------------------");
    					}
    				p=p->next;
    			}
    	}
    
    void demsv(listsv &q)
    	{
    		sv *p;
    		int dem;
    		dem=0;
    		p=q.head;
    		while(p!=NULL)
    			{
    				if((strcmp(p->infor.diachi,"ha noi")==0)&&(p->infor.dcn>=8))
    					{
    						dem++;
    					}
    				p=p->next;
    			}
    		if(dem>0)	{printf("Co %d Sinh Vien Hop Le.",dem);}
    		else if(dem==0)	{printf("Ko Co Ai Ca.");}
    	}
    
    void maxdiem(listsv &q)
    	{
    		sv *p;
    		float max=0;
    		p=q.head;
    		while(p!=NULL)
    			{
    				if(p->infor.dtb>max)
    				{
    					max=p->infor.dtb;
    				}
    				p=p->next;
    			}
    		p=q.head;
    		while(p!=NULL)
    		{
    			if(max==p->infor.dtb)
    				{
    					printf("\nHoten sinh vien: %s --- Ma sinh vien: %s",p->infor.hoten,p->infor.masv);
    					printf("\nDia chi: %s",p->infor.diachi);
    					printf("\nDiem chuyen nghanh: %.2f  --- Diem can ban: %.2f --- Diem trung binh: %.2f ",p->infor.dcn,p->infor.dcb,p->infor.dtb);
    					printf("\n\t\t---------------------------------");
    				}
    			p=p->next;
    		}
    	}
    
    void timma(listsv &q,char tim[])
    	{
    		sv *p;
    		int dem=0;
    		p=q.head;
    		while(p!=NULL)
    			{
    				if(strcmp(p->infor.masv,tim)==0)
    					{
    						printf("\nHoten sinh vien: %s --- Ma sinh vien: %s",p->infor.hoten,p->infor.masv);
    						printf("\nDia chi: %s",p->infor.diachi);
    						printf("\nDiem chuyen nghanh: %.2f  --- Diem can ban: %.2f --- Diem trung binh: %.2f ",p->infor.dcn,p->infor.dcb,p->infor.dtb);
    						printf("\n\t\t---------------------------------");
    
    						dem++;
    					}
    				p=p->next;
    			}
    		if(dem==0){printf("Khong co ma phu hop");}
    	}
    
    
    
    void chendauds(listsv &q)
    	{
    		float dtb;
    		float dcb;
    		float dcn;
    		sv *p;
    		p=(sv*)malloc(sizeof(sv));
    		printf("Nhap hoten sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.hoten);
    
    		printf("Nhap vao ma sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.masv);
    
    		printf("Nhap vao noi o sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.diachi);
    		strupr(p->infor.diachi);
    
    		printf("Nhap vao diem can ban cua sinh vien can chen: ");
    		scanf("%f%*c",&dcb);
    		p->infor.dcb=dcb;
    
    		printf("Nhap vao diem chuyen nghanh cua sinh vien can chen:");
    		scanf("%f%*c",&dcn);
    		p->infor.dcn=dcn;
    
    		p->infor.dtb=float((p->infor.dcb)+p->infor.dcn)/2;
    
    		if(q.head==NULL)
    			{
    				q.head=p;
    				q.tail=q.head;
    			}
    		else
    			{
    				p->next=q.head;
    				q.head=p;
    			}
    		inds(q);
    
    	}
    
    
    
    
    void chencuoids(listsv &q)
    	{
    		float dtb;
    		float dcb;
    		float dcn;
    		sv *p;
    		p=(sv*)malloc(sizeof(sv));
    		printf("Nhap hoten sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.hoten);
    
    		printf("Nhap vao ma sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.masv);
    
    		printf("Nhap vao noi o sinh vien can chen: ");
    		fflush(stdin);
    		gets(p->infor.diachi);
    		strupr(p->infor.diachi);
    
    		printf("Nhap vao diem can ban cua sinh vien can chen: ");
    		scanf("%f%*c",&dcb);
    		p->infor.dcb=dcb;
    
    		printf("Nhap vao diem chuyen nghanh cua sinh vien can chen:");
    		scanf("%f%*c",&dcn);
    		p->infor.dcn=dcn;
    
    		p->infor.dtb=float((p->infor.dcb)+p->infor.dcn)/2;
    
    		if(q.head==NULL)
    			{
    				q.head=p;
    				q.tail=q.head;
    			}
    		else
    			{
    				p->next=NULL;
    				q.tail=q.tail->next=p;;
    			}
    		inds(q);
    
    	}
    
    
    void xoadau(listsv &q)
    	{
    		sv *p;
    		if(q.head==NULL)
    			{
    				printf("Danh sach rog");
    			}
    		else
    			{
    				p=q.head;
    				q.head=q.head->next;
    				free(p);
    			}
    	}
    
    void xoacuoi(listsv &q)
    	{
    		sv *p;
    		if(q.head==NULL)
    			{
    				printf("Danh sach rong");
    			}
    		else
    			{
    				p=q.tail;
    				q.tail=q.tail->next;
    				free(p);
    
    			}
    
    
    	}
    
    
    void xoaten(listsv &q,char ten[30])
    	{
    		sv *p,*r;
    		p=q.head;
    		while(p!=NULL)
    			{
    				if(strcmp(p->infor.hoten,ten)==0) break;
    				r=p;
    				p=p->next;
    			}
    		if(p==NULL)	{printf("Ko co ten can tim trg danh sach.");}
    		else if(r!=NULL)
    			{
    				p=r->next;
    				if(p!=NULL)
    					{
    						if(p==q.tail)
    							{
    								r->next=NULL;
    								q.tail=r;
    							}
    						r->next=p->next;
    						free(p);
    					}
    				else if(q.head!=NULL)
    					{
    						p=q.head;
    						q.head=q.head->next;
    						free(p);
    						if(q.head==NULL) q.tail=NULL;
    					}
    			}
    		printf("Thong tin sau khi xoa: ");
    		inds(q);
    	}
    
    
    void sapxep_dcn(listsv &q)
    	{
    		thongtin temp;
    		sv *p,*r=NULL;
    		p=q.head;
    		while(p!=NULL)
    			{
    				r=p->next;
    				while(r!=NULL)
    					{
    						if(p->infor.dcn>r->infor.dcn)
    							{
    								temp=p->infor;
    								p->infor=r->infor;
    								r->infor=temp;
    							}
    						r=r->next;
    					}
    				p=p->next;
    			}
    		inds(q);
    	}
    
    
    void sapxep_masv(listsv &q)
    	{
    		thongtin temp;
    		sv *p,*r=NULL;
    		p=q.head;
    		while(p!=NULL)
    			{
    				r=p->next;
    				while(r!=NULL)
    					{
    						if(strcmp(p->infor.masv,r->infor.masv)>0)
    							{
    								temp=p->infor;
    								p->infor=r->infor;
    								r->infor=temp;
    							}
    						r=r->next;
    					}
    				p=p->next;
    			}
    		inds(q);
    	}
    
    void sapxep_hoten(listsv &q)
    	{
    		thongtin temp;
    		sv *p,*r=NULL;
    		p=q.head;
    		while(p!=NULL)
    			{
    				r=p->next;
    				while(r!=NULL)
    					{
    						if(strcmp(p->infor.hoten,r->infor.hoten)>0)
    							{
    								temp=p->infor;
    								p->infor=r->infor;
    								r->infor=temp;
    							}
    						r=r->next;
    					}
    				p=p->next;
    			}
    		inds(q);
    
    
    	}
    
    
    
    
    void main(void)
    	{
    		clrscr();
    		listsv q;
    		char tim[30];
    		nhapds(q);
    		inds(q);
    		intt(q);
    		demsv(q);
    		maxdiem(q);
    		printf("Nhap vao ma sinh vien can tim: ");
    		fflush(stdin);
    		gets(tim);
    		timma(q,tim);
    		chendauds(q);
    		chencuoids(q);
    		xoadau(q);
    		inds(q);
    		xoadau(q);
    		inds(q);
    		printf("Nhap ten can xoa: ");
    		fflush(stdin);
    		gets(tim);
    		xoaten(q,tim);
    		sapxep_dcn(q);
    		sapxep_masv(q);
    		sapxep_hoten(q);
    
    		getch();
            }
    u never know

  6. #6
    Ngày gia nhập
    06 2008
    Bài viết
    51

    Mặc định Lập trình C | Tìm phần tử trong danh sách liên kết đơn

    cảm ơn quicksilver89, đoạn code rất hữu ích. Dưới đây là đoạn code tìm pt là số nguyên
    Code:
    node *search(list l, data k)
    {
     node *p;
     p=l.phead;
     while((p!=NULL)&&(p->info!=x))
        p=p->pnext;
     return p;
    }

  7. #7
    Ngày gia nhập
    03 2008
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi 7261819 Xem bài viết
    em hỏi cái đoạn code về tìm phần tử trong DSLK đơn, các bác đều có sách rồi nên em nghĩ ko cần phải viết nữa vì chắc là cũng giống nhau thôi (trừ khi em vô phúc có nhầm quyển sách sai, em nói thật là mấy quyển em có rất nhiều lỗi sai về cơ bản). Điều em hỏi là khi chạy màn hình thì nó sẽ in ra cái jì, chẳng nhẽ vd:
    nhap pt can tim : 5
    pt can tim la: 5 (neu ko co thi: ko tim thay pt nay)
    em thấy hơi vô lý nên hỏi vì phần này chỉ được gợi ý chứ ko được dạy trực tiếp.
    Sax. Pác hỏi in cái rì ra màn hình á??
    Hic. In cái gì thì tùy vào lệnh printf hoặc puts chứ liên quan gì đến thằng code tìm kiếm ?
    Muốn có thắng lợi, phải có hy sinh

  8. #8
    Ngày gia nhập
    06 2008
    Bài viết
    51

    mình muốn hỏi về cơ bản theo mọi người làm thì nó in ra cái jì?

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi 7261819 Xem bài viết
    mình muốn hỏi về cơ bản theo mọi người làm thì nó in ra cái jì?
    Theo mình thì bình thường cái này hay dùng với struct. Ví dụ như tìm tên một người xong rùi in ra địa chỉ, số điện thoại, ...
    Còn nếu như bạn làm là dãy số nguyên thì có thể in ra vị trí của nó chẳng hạn. ( dùng một biến đếm là được )

  10. #10
    Ngày gia nhập
    06 2008
    Bài viết
    51

    vậy là chưa có ai từng làm DSLK tìm pt là số nguyên sao?

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

  1. lấy phần tử trong danh sách liên kết
    Gửi bởi yokashi trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 17
    Bài viết cuối: 24-04-2012, 07:34 PM
  2. Tìm phần tử trong danh sách liên kết
    Gửi bởi cuongitk32 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 17-10-2010, 10:00 AM
  3. Hoán vị phần tử trong danh sách liên kết.
    Gửi bởi IT_BK 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: 11-09-2010, 11:52 PM
  4. Không thể xoá được các phần tử của mảng trong danh sách liên kết!
    Gửi bởi duyanh_28 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 28-07-2010, 11:46 AM
  5. Bài tập C Xóa một phần tử trong danh sách liên kết
    Gửi bởi without_you trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 26-04-2010, 10:48 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