Em chào anh chị. Em đang học môn cấu trúc dữ liệu ở trường. Em có đoạn code sau mong anh chị giúp em. Chỗ int main(), lúc chạy chương trình, sau khi nhập p.tử X= và vị trí P = để thêm phần tử vào vị trí trong danh sách, thì sau khi nhập xong chương trình không xuất ra danh sách sau khi thêm. Mong anh chị sửa lỗi code giúp em. Chân thành cảm ơn.
http://codepad.org/iPZromvU
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
typedef int ElementType;
struct Node{
ElementType Element;
Node *Next;
};
typedef Node *Position;
typedef Position List;
void MakeNull(List *Head)
{
(*Head)=(Node*)malloc(sizeof(Node));
(*Head)->Next = NULL;
}
Position First(List L)
{
return L;
}
Position Next(Position P, List L)
{
return P->Next;
}
ElementType Retrieve(Position P, List L)
{
return P->Next->Element;
}
Position EndList(List L)
{
Position P = First(L);
while(P->Next != NULL)
{
return P=P->Next;
}
return P;
}
Position Locate(ElementType X, List L)
{
Position P = L;
int Found = 0;
while(P->Next != NULL && Found == 0)
{
if(Retrieve(P,L) == X) Found = 1;
else
P=P->Next;
}
return P;
}
void Insert(ElementType X, Position P, List *L)
{
Position T = (Node*)malloc(sizeof(Node));
T->Element = X;
T->Next = P->Next;
P->Next = T;
}
void Delete(Position P, List *L)
{
Position T;
if(P->Next != NULL)
{
T->Next = P->Next;
P->Next = T->Next;
free(L);
}
else
{
printf("\nLoi ! Danh sach rong khong the xoa duoc ! ");
}
}
void Input(List *L)
{
int i,n,x;
printf("Ban muon nhap bao nhieu phan tu trong danh sach: ");scanf("%d",&n);
for(i=1; i<=n; i++)
{
printf("Phan tu thu %d: ",i);scanf("%d",&x);
Insert(x,EndList(*L),L);
}
}
void Output(List L)
{
Position P = First(L);
while(P->Next != NULL)
{
printf("%4d",Retrieve(P,L));
P=P->Next;
}
printf("\n");
}
int main()
{
List L;
ElementType X;
Position P;
MakeNull(&L);
Input(&L);
printf("\tDanh sach sau khi nhap:\t");
Output(L);
//them phan tu X vao vi tri P trong danh sach
printf("\nNhap phan tu can them: X= ");scanf("%d",&X);
printf("\nNhap vi tri can them: P= ");scanf("%d",&P);
Insert(X,P,&L);
printf("\nDanh sach sau khi them: ");
Output(L);
getch();
return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?