all of nodes in linkedlist are the same, seems insertion is not working : whatsup guys 
i have a linked list in cpp , after inserting several nodes now i see all of them are the same , thou im using different values to add to node each time ,but its like all of them are same , even when trying to change a node all of them are changing together or its the same node that is always being returnd idk.




class node
{
	public:
		
		int ochance=3;
		
		string question;
		
		string option1;
		int peopleeffectop1;
		int courteffectop1;
		int treasuryeffectop1;
		
		string option2;
		int peopleeffectop2;
		int courteffectop2;
		int treasuryeffectop2;
		
		
		
		node *next;	
};


class list
{
		private:
		node *head, *tail;
		public:
		list()
		{
			head=NULL;
			tail=NULL;
		}
		
		void createnode(int value , string q , string ans1 , int ans1ef1 , int ans1ef2, int ans1ef3 , string ans2, int ans2ef1 , int ans2ef2, int ans2ef3  )
		{
			node *temp=new node;
			
			temp->ochance=value;
			
			temp->question = q;
			temp->option1 = ans1;
			temp->peopleeffectop1 = ans1ef1;
			temp->courteffectop1  = ans1ef2;
			temp->treasuryeffectop1 = ans1ef3;
			temp->option2 = ans2;
			temp->peopleeffectop2 = ans2ef1;
			temp->courteffectop2  = ans2ef2;
			temp->treasuryeffectop2 = ans2ef3;
			
			temp->next=NULL;
			
			if(head==NULL)
			{
				head=temp;
				tail=temp;
				temp=NULL;
			}
			else
			{	
				tail->next=temp;
				tail=temp;
			}
		}

		node getnth(int pos)
		{
			node* tmp = new node;
			tmp= head;
			int i =0 ; 
			
			while(tmp!=NULL){
				if (i=pos) {
				return *tmp;
			}
				i++;
				tmp = tmp->next;
			}
						
		}
		
		int getlen(){
			
			node* tmp = new node;
			tmp= head;
			int i =0 ; 
			
			while(tmp!=NULL){
				i++;
				tmp = tmp->next;
			}
			
			return i;
		}
		
		void minus(int pos){
			
			node* tmp = new node;
			tmp= head;
			int i =0 ; 
			
			while(tmp!=NULL){
				if (i=pos) {
					tmp->ochance -=1;
			}
				i++;
				tmp = tmp->next;
			}
		}
		
		void delete_first()
		{
			node *temp=new node;
			temp=head;
			head=head->next;
			delete temp;
		}
		void delete_last()
		{
			node *current=new node;
			node *previous=new node;
			current=head;
			while(current->next!=NULL)
			{
				previous=current;
				current=current->next;	
			}
			tail=previous;
			previous->next=NULL;
			delete current;
		}
		void delete_position(int pos)
		{
			node *current=new node;
			node *previous=new node;
			current=head;
			for(int i=1;i<pos;i++)
			{
				previous=current;
				current=current->next;
			}
			previous->next=current->next;
		}
};