Double Linked List Flashcards

1
Q

PushTengah

A
void pushTengah(char nama[],int usia){
	struct Mahasiswa *curr = (struct Mahasiswa*)malloc(sizeof(struct Mahasiswa));
	strcpy(curr->nama,nama);
	curr->usia = usia;
	if(head == NULL)
	{
		head = tail = curr; 
		tail->next = NULL;
		head->prev = NULL;
	}
	else
	{
		if(head==tail)
		{
			//ini sama keq push belakang
			tail->next = curr;
			curr->prev = head;
			tail = curr;
			tail->next = NULL; //bisa dihilangkan kl ud pake smart push.
		}else
		{   
			struct Mahasiswa *temp;
			for(temp=head;temp->next!=NULL;temp=temp->next){				 
				if(strcmpi(temp->next->nama,nama)>0){
					break;
				}
			}
			temp->next->prev = curr;
			curr->prev = temp;			
			curr->next = temp->next;
			temp->next = curr;
		}
	}        
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

popTengah

A
void popTengah(int usia)
{
	struct Mahasiswa *curr;
	if(head == NULL)
	{
		//Case-1: No data at all
		printf("Tidak ada data\n");
		getchar();
	}else
	{
		if(head == tail){
			//Case-2: 1 data left
			head = tail = NULL;
			free(head);
		}else{
			int isFound = 0;
			//Case-3: There is more than 1 data
			struct Mahasiswa *temp;
			for(temp=head;temp!=NULL;temp=temp->next){
				if(temp->usia == usia){
					isFound = 1;
					break;                           
				}
			}
			if(isFound == 1)
			{
				temp->next->prev = temp->prev;
				temp->prev->next = temp->next;
				free(temp);
			}else
			{
				printf("Sorry coi, gak ada yg bs didelete, gk nemu coi");
				getchar();
			}
		}
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

popDepan

A
void popDepan()
{
	struct Mahasiswa *curr;
	if(head == NULL)
	{
		//Case-1: No data at all
		printf("Tidak ada data\n");
		getchar();
	}else
	{
		if(head == tail){
			//Case-2: 1 data left
			head = tail = NULL;
			free(head);
		}else{
			//Case-3: There is more than 1 data
			curr = head;
			head=head->next;
			free(curr);
			head->prev = NULL;
		}
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

popBelakang

A
void popBelakang(){
	struct Mahasiswa *curr;
	if(head == NULL)
	{
		//Case-1: No data at all
		printf("Tidak ada data\n");
		getchar();
	}else
	{
		if(head == tail){
			//Case-2: 1 data left
			head = tail = NULL;
			free(head);
		}else{
			//Case-3: There is more than 1 data
			curr = tail;
			tail = tail->prev;
			free(curr);
			tail->next = NULL;
		}
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

pushDepan

A
void pushDepan(char nama[],int usia){
	struct Mahasiswa *curr = (struct Mahasiswa*)malloc(sizeof(struct Mahasiswa));
	strcpy(curr->nama,nama);
	curr->usia = usia;
	if(head == NULL)
	{
		head = tail = curr;
		tail->next = NULL;			  
	}
	else
	{
		curr->next = head;
		head->prev = curr;
		head = curr;
	}
	head->prev = NULL;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

pushBelakang

A
void pushBelakang(char nama[],int usia){
	struct Mahasiswa *curr = (struct Mahasiswa*)malloc(sizeof(struct Mahasiswa));
	strcpy(curr->nama,nama);
	curr->usia = usia;
	if(head == NULL)
	{
		head = tail = curr; 			  
		head->prev = NULL;
	}
	else
	{
		tail->next = curr;
		curr->prev = tail;
		tail = curr;
	}
	tail->next = NULL;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

smartPop

A
void smartPop(int usia){
	if(head != NULL){
		if(usia == head->usia){
			popDepan();
		}else if(usia == tail->usia){
			popBelakang();
		}else{
			popTengah(usia);
		}
	}else{
		printf("Belum ada data coi\n");
		getchar();
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

smartPush

A
void smartPush(char nama[],int usia){
	if(head == NULL){
		pushDepan(nama,usia);
	}else{
		if(strcmp(nama,head->nama)nama)>0){
			pushBelakang(nama,usia);
		}else{
			pushTengah(nama,usia);
		}
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly