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);
}
Chủ Nhật, 31 tháng 5, 2015
Tính trung bình cộng các giá trị trong DSLK đơn
Đăng ký:
Đăng Nhận xét (Atom)
0 nhận xét:
Đăng nhận xét