//function: delete a node at position n
#include<stdio.h>
#include<stdlib.h>
void Insert(int data); //insert an integer at end of list
void Print(); //print all elements in the link list
void Delete(int n); //delete node at position n
typedef struct Node{
int data;
struct Node *next;
}Node;
Node *head;
int main()
{
head = NULL; //empty list
Insert(2);
Insert(4);
Insert(6);
Insert(8);
Insert(10);
Print();
int n;
printf("enter the position:\n");
scanf("%d", &n);
Delete(n);
Print();
return 0;
}
void Insert(int data)
{
Node *newnode = (Node *)malloc(sizeof(Node));
//printf("%d\n", sizeof(Node));
newnode->data = data;
newnode->next = NULL;
//printf("1--this node data is :%d\n", newnode->data);
if(head == NULL)
{
head = newnode;
return;
}
Node *temp = head;
while(temp->next != NULL) //find the last element
{
temp = temp->next;
}
//printf("tmp data is:%d\n", temp->data);
temp->next = newnode;
//newnode->next = NULL;
//head = temp;
//printf("this node data is :%d\n", temp->next->data);
}
void Print()
{
Node *temp = head;
printf("List is:");
while(temp != NULL) //find the null position
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
void Delete(int n) //delete node at position n
{
Node *delnode = (Node*)malloc(sizeof(Node));
Node *temp1 = head;
if(n ==1 )
{
head = temp1->next;
free(temp1);
return;
}
int i = 0;
for (i=1; i<n-1; i++)
{
temp1 = temp1->next;
} //find n-1 position element
delnode = temp1->next;
temp1->next = delnode->next;
free(delnode);
}