#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
int val;
struct LNode *next;
int length;
}LNode,*LinkList;
void print(LinkList h);
LNode * GetElem(LinkList L,int i);
LinkList List_HeadInsert(LinkList &L );
LinkList reverse_node_1(LinkList L);
LNode *get_k_node(LinkList L,int k);
LNode * removeDupicateNodes(struct LNode * head);
LNode * reverse_node( LNode* headtest);
int data[6]={1, 2,3,4,5,6};
int main(){
LinkList L;
LNode *q;
LNode *t;
int x;
L=List_HeadInsert(L);
print (L);
printf("\n");
t=reverse_node(L);
print (t);
return 0;
}
LinkList List_HeadInsert(LinkList &L ){
LNode *s;
int x,i=0;
L=(LinkList)malloc(sizeof(LNode));
LNode*r =L;
while(i<=5){
s=(LinkList)malloc(sizeof(LNode));
s->val=data[i];
r->next = s;
r=s;
i++;
}
r->next=NULL;
L->length=i+1;
return L;
}
void print(LinkList h){
LinkList p=h->next;
while(p!=NULL){
printf("%d ",p->val);
p=p->next;
}
}
LNode * removeDupicateNodes(struct LNode * head){
if(head == NULL) return NULL;
struct LNode *current = head;
while(current){
struct LNode * p=current;
while(p->next){
if(p->next->val == current->val){
p->next = p->next->next;
}
else{
p=p->next;
}
}
current = current->next;
}
return head;
}
LNode * GetElem(LinkList L,int i){
int j=1;
LNode *p=L->next;
if(i==0)return L;
if(i<1)return L;
while(p&& j<i){
p=p->next;
j++;
}
return p;
}
LinkList reverse_node_1(LinkList L){
LNode*p,*r;
p= L->next;
L->next=NULL;
while(p!=NULL){
r=p->next;
p->next=L->next;
L->next=p;
p=r;
}
return L;
}
LNode *get_k_node(LinkList L,int k){
LNode *q;
q=NULL;
q=GetElem(L,(L->length)-k);
return q;
}
LNode * reverse_node( LNode* headtest ){
if(headtest ==NULL || headtest->next==NULL)
return headtest;
else
{
LNode* former = NULL;
LNode* mid = headtest->next;
LNode* latter = NULL;
LNode * L;
L=(LinkList)malloc(sizeof(LNode));
L->next= NULL;
while(mid!=NULL){
latter = mid->next;
mid->next = former;
former = mid;
mid = latter ;
}
L->next=former;
return L;
}
}