#include<conio.h>
#include<stdio.h>
#include<malloc.h>
typedef int ElementType; //gia tri
typedef struct Node
{
ElementType Element;
Node* Next;
};
typedef Node *Position;
typedef Position List;
void MakeNull_List(List &Header) //Khoi tao danh sach rông
{
Header=(Node*)malloc(sizeof(Node));
Header->Next=NULL;
}
int Empty_List(List L)
{
return (L->Next==NULL);
}
Position FirstList(List L)
{
return L;
}
void Insert_List(ElementType X, Position P, List &L)
{
Position T;
T=(Node*)malloc(sizeof(Node));
T->Element=X;
T->Next=P->Next;
P->Next=T;
}
void InsertFirstList(ElementType X, List &L)
{
Insert_List(X, FirstList(L), L);
}
Position EndList(List L)
{
Position P;
P=L;
while (P->Next!=NULL)
P=P->Next;
return P;
}
void InsertEndList(ElementType X, List &L)
{
Insert_List(X, EndList(L), L);
}
void Delete_List(Position P, List &L)
{
Position T;
if (P->Next!=NULL)
{
T=P->Next;
P->Next=T->Next;
free(T);
}
}
Position Locate(ElementType X, List L)
{
Position P=L;
while (P->Next!=NULL)
if (P->Next->Element==X) break;
else P=P->Next;
return P;
}
ElementType Retrieve(Position P, List L)
{
if (P->Next!=NULL)
return P->Next->Element;
}
void Read_List(List &L)
{
int n;
printf("\t Nhap so phan tu cua danh sach: ");
scanf("%d",&n);
int i=0;
ElementType X;
while (i<n)
{
printf("\t-Nhap phan tu thu %d: ",i);
scanf("%d",&X);
InsertEndList(X,L);
i++;
}
}
void Print_List(List &L)
{
Position P=FirstList(L);
while (P->Next!=NULL){
printf("%6d",P->Next->Element);
P=P->Next;
}
}
void Distinct(List &L)
{
Position P,Q;
for (P=L;P->Next!=NULL;P=P->Next)
{
for (Q=P->Next;Q->Next!=NULL; )
if (P->Next->Element==Q->Next->Element)
Delete_List(Q,L);
else
Q=Q->Next;
}
}
void Sort(List &L)
{
Position P,Q;
ElementType Temp;
for (P=L;P->Next!=NULL;P=P->Next)
for (Q=P->Next;Q->Next!=NULL; Q=Q->Next)
if(P->Next->Element>Q->Next->Element)
{
Temp=P->Next->Element;
P->Next->Element=Q->Next->Element;
Q->Next->Element=Temp;
}
}
main()
{
int n;
List L;
Position P;
MakeNull_List(L);
Read_List(L);
printf("\n\t-> Danh sach vua nhap: \n");
Print_List(L);
Sort(L);
printf("\n\t-> Danh sach da sap xep: \n");
Print_List(L);
printf("\n");
Distinct(L);
printf("\n\t-> Danh sach da tach loc: \n");
Print_List(L);
printf("\n");
printf("\n them phan tu vao danh sach: "); scanf("%d",&n);
ElementType X=n;
printf("\n");
InsertEndList(X,L);
printf("\n\t-> Danh sach da them phan tu vao cuoi: \n");
Print_List(L);
InsertFirstList(X,L);
printf("\n\t-> Danh sach da them phan tu vao dau: \n");
Print_List(L);
getch();
}
Không có nhận xét nào:
Đăng nhận xét