Processing math: 100%

Chủ Nhật, 31 tháng 5, 2015

Tính trung bình cộng các giá trị trong DSLK đơn

a) Tính trung bình cộng các giá trị trong DSLK đơn
b) Chèn vào đầu và cuối danh sách 1 phần tử



#include <stdio.h>
#include<iostream>

using namespace std;
typedef struct  tagNode
{ int  data;
struct tagNode* pNext;
}NODE;

typedef struct  tagList
{
NODE* pHead;
NODE* pTail;
}LIST;
void Init(LIST &l)
{
l.pHead = l.pTail = NULL;
}

NODE* GetNode(int x)
{
NODE* p;
p = new NODE;
if (p == NULL)
{
exit(0);
}
p->data = x;
p->pNext = NULL;
return p;
}
void AddHead(LIST &l, NODE* new_ele)
{
if (l.pHead == NULL)
l.pHead = l.pTail = new_ele;
else
{
new_ele->pNext = l.pHead;
l.pHead = new_ele;
}
}
NODE *Inserthead(LIST &l, int x){
NODE *p = GetNode(x);
if (p == NULL) return NULL;
if (l.pHead == NULL){
l.pHead = p;
l.pTail = l.pHead;
}
else{
p->pNext = l.pHead;
l.pHead = p;
}
return p;
}
NODE *Inserttail(LIST &l, int x){
NODE *p = GetNode(x);
if (p == NULL) return NULL;
if (l.pHead == NULL){
l.pHead = p;
l.pTail = l.pHead;
}
else{
l.pTail->pNext = p;
l.pTail = p;
}
return p;
}
void AddTail(LIST &l, NODE* new_ele)
{
if (l.pTail == NULL)
l.pHead = l.pTail = new_ele;
else
{
l.pTail->pNext = new_ele;
l.pTail = new_ele;
}
}
void InPut(LIST &l)
{
int x;
NODE *pnew;
Init(l);
do{
cout << "Nhap gia tri: (nhan 0 de ket thuc) ";
cin >> x;
if (x == 0)
break;
pnew = GetNode(x);
//AddHead(l, pnew);
AddTail(l, pnew);
} while (true);
}

void OutPut(LIST l)
{
NODE *p = l.pHead;
while (p)
{
cout << p->data << "   ";
p = p->pNext;
}
}
void HoanVi(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
void Chontructiep(LIST l)
{
NODE *pmin;
for (NODE *p = l.pHead; p != l.pTail; p = p->pNext)
{
pmin = p;
for (NODE *q = p->pNext; q; q = q->pNext)
if (q->data < pmin->data)
pmin = q;
HoanVi(pmin->data, p->data);
}
}


int TinhTong(LIST l){

int s = 0;
for (NODE *p = l.pHead; p ; p = p->pNext){
s += p->data;
}
return s;
}

int Demsoluong(LIST l){
int dem = 0;
for (NODE *p = l.pHead; p; p = p->pNext){
if (p->data != NULL)
dem++;
}
return dem;
}


int main()
{
int k,a;
NODE *p;
LIST l;
Init(l);
InPut(l);
OutPut(l);

cout << endl;
//OutPut(l);
//Cau a:
cout << "\n Gia tri trung binh cong cac phan tu la: " << (float)TinhTong(l) / Demsoluong(l);

//Cau c:
cout << "\n Nhap vao phan tu can chen vao dau:";
cin >> k;
cout << "\nDanh sach sau khi chen la:";
Inserthead(l, k);
OutPut(l);

cout << "\nNhap vao phan tu can them vao cuoi:";
cin >> a;
cout << "\nDanh sach sau khi chen la:\n";
Inserttail(l, a);
OutPut(l);

system("pause");
return(0);
}

0 nhận xét:

Đăng nhận xét