ผมเขียนโปรแกรมสลับค่าใน linked list
เช่นผมต้องการสลับค่า 5 กับ 10
แต่ผมได้ผลลัพธ์ 10 5 10
จากผลลัพธ์เหมือนกับว่าผมไม่ได้คืนค่าหน่วยความจำให้กับระบบ(free) ผมต้องแก้ไขโค้ดอย่างไรหรือที่หยุดไหนครับ
ตัวแปร โครงสร้าง
struct node
{
int energy;
struct node *link;
};
ฟังก์ชั่นสลับค่า
void swop()
{
struct node *walknode ;
walknode=start;// walknode start at begin
struct node *newtemp;
newtemp=(node*)malloc(sizeof(struct node)); //create new memory
newtemp->energy=walknode->energy; //assign data to newtemp
printf("data = %d\n",newtemp->energy);
newtemp->link=start;//assign data to newtemp
start=newtemp;
}
ฟังก์ชั่นปริ้น
void print()
{
struct node *temp;
temp=start;
while(temp!=NULL){
printf("%d ",temp->energy);
temp=temp->link;
}
printf("\n");
}
การสลับค่าข้อมูลใน linked list
เช่นผมต้องการสลับค่า 5 กับ 10
แต่ผมได้ผลลัพธ์ 10 5 10
จากผลลัพธ์เหมือนกับว่าผมไม่ได้คืนค่าหน่วยความจำให้กับระบบ(free) ผมต้องแก้ไขโค้ดอย่างไรหรือที่หยุดไหนครับ
ตัวแปร โครงสร้าง
struct node
{
int energy;
struct node *link;
};
ฟังก์ชั่นสลับค่า
void swop()
{
struct node *walknode ;
walknode=start;// walknode start at begin
struct node *newtemp;
newtemp=(node*)malloc(sizeof(struct node)); //create new memory
newtemp->energy=walknode->energy; //assign data to newtemp
printf("data = %d\n",newtemp->energy);
newtemp->link=start;//assign data to newtemp
start=newtemp;
}
ฟังก์ชั่นปริ้น
void print()
{
struct node *temp;
temp=start;
while(temp!=NULL){
printf("%d ",temp->energy);
temp=temp->link;
}
printf("\n");
}