Week 5
Week 5
if (!head)
head = New;
return head;
New->next = head;
head->prev = New;
New->prev = NULL;
head = New;
return head;
else
temp = temp->next;
if (temp->next != NULL)
next->prev = New;
New->next = next;
else
New->next = NULL;
temp->next = New;
New->prev = temp;
return head;
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
struct Node* insertEnd(struct Node* last, int data) {
if (last == NULL) {
newNode->data = data;
newNode->next = newNode;
return newNode;
newNode->data = data;
newNode->next = last->next;
last->next = newNode;
return newNode;
if (last == NULL)
return 0;
int sum = 0;
do {
sum += current->data;
current = current->next;
return sum;
}
int main() {
int n, data;
scanf("%d", &n);
scanf("%d", &data);
printf("%d\n", sum);
return 0;
Post lab
current = current->next;
}
}
return head;
}
};
2. CYCLE
bool has_cycle(SinglyLinkedListNode* head) {
SinglyLinkedListNode* fast=head;
SinglyLinkedListNode* slow=head;
fast=fast->next->next;
slow=slow->next;
if(fast==slow)
return 1;
return 0;
SKILL
1. DESIGN LINKEDLIST
struct Node {
int val;
};
} MyLinkedList;
newNode->next = NULL;
newNode->val = val;
return newNode;
MyLinkedList* myLinkedListCreate() {
obj->head = NULL;
return obj;
return current->val;
return -1;
else
if(current->next)
current = current->next;
else
return -1;
return current->val;
if(obj->head == NULL)
obj->head = createNode(val);
else
obj->head = createNode(val);
obj->head->next = temp;
if(!obj->head)
myLinkedListAddAtHead(obj,val);
else
current = obj->head;
while(current->next != NULL)
current = current->next;
current->next = createNode(val);
if(index == 0)
myLinkedListAddAtHead(obj,val);
for(int i = 1;i<index;i++)
{
if(current->next)
current = current->next;
else
return;
temp = current->next;
current->next = createNode(val);
current = current->next;
current->next = temp;
else
return;
obj->head = current->next;
free(current);
obj->head = NULL;
else if(current->next)
if(current->next->next)
current = current->next;
else
return;
deleteNode = current->next;
current->next = deleteNode->next;
free(deleteNode);
next = temp->next;
free(temp);
while(next->next)
temp = next;
next = next->next;
free(temp);
free(next);
else if(temp)
{
free(temp);
else
return;
if(obj->head == NULL)
printf("NULL\n");
return;
while(current != NULL)
current = current->next;
printf("\n");
if (h->child){
h->next = h->child;
h->next->prev = h;
h->child = NULL;
Node* temp = h->next;
temp->next = next;
return head;
int last=1;
for(int i=2;i<=n;i++)
last=(last+k-1)%i+1;
return last;
p1 = p1->next;
p2 = p2->next->next;
head = head->next;
p1 = p1->next;
return head;
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
struct Node { int data; struct Node* next; struct Node* prev; };
maxNode = temp;
temp = temp->next;
if (maxNode->prev != NULL) {
printf("%d\n", maxNode->prev->data);
} else {
printf("%d", maxNode->data);
int main() { int n; scanf("%d",&n); struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->data = n; head->next = NULL; head->prev = NULL;
findMaxAndPredecessor(head);
return 0;
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
struct Node
int data;
};
void create()
temp=head;
scanf("%d",&New->data);
New->next=NULL;
if(head==NULL){
head=New;
head->pre= NULL;
else
{
while(temp->next!=NULL)
temp=temp->next;
temp->next=New;
New-> pre=temp;
void display()
temp=head;
while(temp!=NULL)
printf("%d deleted",temp->data);
temp=temp->next;
void del_pos()
temp=head;
head=head->next;
head->pre=NULL;
free(temp);
int main() {
create();
//del_pos();
display();
return 0;
}