Show the results of linked list operations in sequence
Typo in method name?

insert_at_begning looks like it should be called insert_at_beginning?

insert_at_middle

The method name doesn't seem to match what it actually does.  It looks more like it's insert_after.

It also looks like it has a memory leak, what happens if you attempt to insert after a value that isn't currently in the list?

var

var is not a good name for a variable, it is totally nondescript. It is even worse when it is declared at a global/file scope where it's declaration isn't even visible.  You appear to be using a global variable var in your insert methods, however have a local var in your delete_from_middle method.  This is confusing.  Variable should be named after what they represent from a logical perspective.  You should also try to avoid using the same name for variables in nested scopes.

main

Your main looks mostly ok as a test harness, however it's rather inefficient.  Since your list doesn't maintain a tail pointer, inserting at the end is much slower than inserting at the beginning.  Similarly, inserting in the middle is relatively slow.  It would be more efficient to insert everything from the end to the front, rather than from the front to the end.

I'd also personally store the arrays to be inserted in the order that I wanted them to be in the list (not backwards), then iterate through them in reverse order.  I know this has the same effect, but when I look at the code I would then be able to see the list rather than having to mentally flip the arrays.