Untitled
unknown
plain_text
10 months ago
2.7 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *link;
};
struct node *head;
struct node *temp;
struct node *head = NULL;
struct node *create(struct node **head){
struct node *temp;
struct node *new;
int data;
printf("Enter data (-1 to stop):\n ");
scanf("%d", &data);
while (data != -1) {
new = (struct node*)malloc(sizeof(struct node));
if (new == NULL) {
printf("Memory allocation failed!\n");
return head;
}
new->data = data;
new->link = NULL;
if (head == NULL) {
head = new; // First node
temp = *head;
} else {
temp->link = new;
temp = new;
}
printf("Enter data (-1 to stop):\n ");
scanf("%d", &data);
}
return *head;
}
void display(struct node *head){
struct node *temp;
temp = head;
if(temp == NULL){
printf("No list Found!");
}
else{
while(temp->link != NULL){
printf("%d->", temp->data);
temp = temp->link;
}
temp->link = NULL;
}
}
struct node *reversedList(struct node **head){
struct node *temp;
struct node *prev = NULL;
struct node *link = NULL;
temp = *head;
while(temp != NULL){
link = temp->link;
temp->link=prev;
prev = temp;
temp = link;
}
return prev;
}
int isPalindrome(struct node **head){
struct node *slow = *head, *temp = *head;
while(temp && temp->link){
slow= slow->link;
temp = temp->link->link;
}
struct node *revHead = reversedList(slow);
struct node *temp1 = *head;
struct node *temp2 = revHead;
while(temp2->link != NULL){
if (temp1->data == temp2->data){
temp1 = temp1->link;
temp2 = temp2->link;
}
else{
printf("Not a Palindrome..!");
}
return 1;
}
}
int main(){
int ch;
printf("Enter choice:\n ");
do{
printf("1.create:\n");
printf("2.display:\n");
printf("3.reversedList:\n");
printf("4.isPalindrome:\n");
printf("0.exit:\n");
scanf("%d", &ch);
switch(ch)
{
case 1:
head = create(&head);
break;
case 2:
display(&head);
break;
case 4:
isPalindrome(&head);
break;
case 3:
head = reversedList(&head);
break;
case 0:
printf("Exiting...\n");
break;
Default:
Printf("Invalid option:");
break;
}
} while(ch!=0);
return 0;
}
Editor is loading...
Leave a Comment