Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 Thêm hàm vào dslk
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
girlthethao
Member

girlthethao
Member
Giới tính : Nữ
Tuổi : 28
Posts Posts : 21
Coins Coins : 87
Thanked Thanked : 0
Thêm hàm vào dslk Empty
Bài gửiTiêu đề: Thêm hàm vào dslk   Thêm hàm vào dslk EmptyThu 03 Nov 2011, 21:49

Mình có 1 bài tập về dslk có các chức năng : nhập , xuất , chèn phần tử , đếm số nút sau khi chèn , tính giá trị trung bình các nút mới .
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
typedef struct node
{
int data;
struct node *next;
};
typedef struct node *list;
list p,first,goc;

//Khoi tao danh sach lien ket
void initlist(list *p)
{
*p=NULL;
}
/*-------------------------------------------------
Chen 1 phan tu X vao dau danh sach lien ket */
void insert_first(int x,list *first)
{
p=(list)malloc(sizeof(struct node));
p->data=x;
p->next=*first;
*first=p;
}
//-----------------------------------------------//
void insert_last(int x,list *first)
{
list p;
p=(list)malloc(sizeof(struct node));
p->data=x;
p->next=NULL;
(*first)->next=p;
*first=p;
}
//-----------------------------------------------//
void chen(int x,int n,list first)
{
int i;
list p,q;
q=first;
p=(list)malloc(sizeof(struct node));
for (i=1;i<n;i++)
{
q=q->next;
}
p->data=x;
p->next=q->next;
q->next=p;
}
//-------------------------------------------------//
void traversal(list first)
{
p=first;
while (p!=NULL)
{
printf("%5d",p->data);
p=p->next;
}
}
//--------------------------------------------------//
main()
{
int vitri,n,e,dem=0;
long tong=0;
struct node *tmp;
initlist(&first);
//goc=first;

printf("Nhap n = ");
scanf("%d",&n);
while (n)
{
insert_first(n,&first);
//insert_last(n,&first);
printf("Nhap n = ");
scanf("%d",&n);
}
printf("Danh sach da tao :\n");
traversal(first);
//traversal(goc->next); chen cuoi

printf("\nNhap gia tri can chen : ");scanf("%d",&e);
printf("Nhap vi tri can chen : ");scanf("%d",&vitri);
printf("Sau khi chen danh sach gom :\n");
chen(e,vitri,first);
traversal(first);

tmp=first;
while(tmp!=NULL)
{
dem++;
tong+=tmp->data;
tmp=tmp->next;
}
printf("\nSo nut trong danh sach moi = %d",dem);
printf("\nGia tri trung binh cua cac nut trong danh sach moi = %4.2f",(double)tong/dem);
getch();

tmp=first;
while (tmp!=NULL)
{
tmp=first->next;
free(first);
first=tmp;
}
return 0;
}


Muốn thêm vào bài toán chức năng :
a) In giá trị lớn nhất của các số trong dslk .
b) In ra các số nhỏ hơn hoặc bằng giá trị trung bình
Rất mong giúp đỡ !





※ Bài viết cùng chuyên mục


 
Thêm hàm vào dslk
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Windows Việt :: Lưu Trữ :: Lưu Trữ - Các môn học cũ :: Kỹ Thuật Lập Trình-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom