If your structure only has one level, you can use a title format like this:
Number {{ craft.entries.order('lft desc').positionedBefore(object).total()+1 }} published in {postDate|date('F')} {postDate|date('Y')}
This works when you create new entries, they'll get their current position in the title.
The problem is that this number won't get updated if you sort the stucture, since you'd need to resave all entries affected by the move, to update their title and slug. You can do this by creating a custom plugin (or module, if you're using Craft 3), listen to the appropriate events (for instance Element.EVENT_AFTER_MOVE_IN_STRUCTURE
in Craft 3), and resave all entries. This could be a quite resource intensive operation if you have a lot of entries.
You could also get the number in Twig with the same code:
{{ craft.entries({ order: 'lft desc', positionedBefore: entry }).total() + 1 }}
This number will always be the updated number in the position, since the query is executed at runtime, instead of when an entry is saved. If you want to show this number to the enduser, I'd recommend this approach.
If you want to show the number in the control panel, I'd recommend looking into the ability to add custom columns to Craft's element indexes instead of having it in the title.
Maybe if you provide more information on the use-case, we can provide even more insight into possible solutions.