¿Alguien me puede decir qué estoy haciendo mal?
 
 
#include <iomanip>
#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
 
struct Fecha {
	int dia;
	int mes;
	int anyo;
};
struct Contacto {
	int rut;
	char digv;
	char nombre[100];
	char direccion[100];
	Fecha f_nac;
	Contacto *siguiente;
 
};
 
Contacto *Crear_nodo();
Contacto *Ingresar(Contacto *);
Contacto *Buscar_nombre(Contacto *, char[100]);
void Mostrar(Contacto *);
int main()
{
	bool salir = false;
	int opcion;
	char nom[100];
	Contacto *lista = NULL, *resultado;;
	do {
		system("cls");
		cout << "\n\n\t1.- Ingresar Contacto\n\t2.- Mostrar Contactos\n\t3.- Buscar por nombre\n\t4.- Salir\n" << endl;
		cout << "\n\t Elija una opcion: " << endl;
		cin >> opcion <<endl;
		while (opcion <1 && opcion >4)
		{
			cout << "\n\t Elija una opcion: ";
			cin >> opcion;
		}
 
		switch (opcion)
		{
		case 1: lista = Ingresar(lista);
			break;
		case 2: system("cls");
			Mostrar(lista);
			cout << endl;
			getchar();
			cout << " \n\n Ingrese nombre para desplegar: ";
			cin.getline(nom, 100);
			resultado = Buscar_nombre(lista, nom);
			if (resultado == NULL)
				cout << "ERROR: NOMBRE NO ENCONTRADO\n";
			else
			{
				cout << "Numero de contacto = " << resultado->rut << endl;
				cout << "Nombre = " << resultado->nombre << endl;
				cout << "Direccion = " << resultado->direccion << endl;
				cout << "Fecha de Nacimiento = " << setfill('0') << setw(2) << resultado->f_nac.dia << "/" << resultado->f_nac.mes << "/" << resultado->f_nac.anyo << endl;
			}
 
			void Mostrar(Contacto *x);
			{
				if (*x = NULL)
				{
					cout << "\n\n" << x->nombre;
					if (x->siguiente != NULL)
						Mostrar(x->siguiente);
				}
			}
			Contacto *Buscar_nombre(Contacto * x, char nomb[100]);
			{
				if (x != NULL)
					if (strcmp(x->nombre, nombre) == 0)
						return x;
					else if (x->siguiente != NULL)
						return Buscar_nombre(x->siguiente, nombre);
					else
						return NULL;
				else
					return NULL;
			}
			Contacto *Crear_nodo();
			{
				Contacto *x;
				x = (struct Contacto *) malloc(sizeof(struct Contacto));
				system("cls");
				cout << "\n\n\t Ingrese Numero de contacto: ";
				cin >> x->rut;
				getchar();
				cout << "\n\n\t Ingrese Nombre: ";
				cin.getline(x->nombre, 100);
				cout << "\n\n\t Ingrese Direccion: ";
				cin.getline(x->direccion, 100);
 
				cout << "\n\n\t Ingrese Dia Nacimiento: ";
				cin >> x->f_nac.dia;
				cout << "\n\n\t Ingrese Mes nacimiento (en numero): ";
				cin >> x->f_nac.mes;
				cout << "\n\n\t Ingrese Anyo Nacimiento: ";
				cin >> x->f_nac.anyo;
				x->siguiente = NULL;
				return x;
		case 3: system("cls");
			getchar();
			cout << "Ingrese nombre a buscar: ";
			cin.getline(nom, 100);
			resultado = Buscar_nombre(lista, nom);
			if (resultado == NULL)
				cout << "ERROR: NOMBRE NO ENCONTRADO\n";
			else
			{
				cout << "Numero de contacto = " << resultado->rut << endl;
				cout << "Nombre = " << resultado->nombre << endl;
				cout << "Direccion = " << resultado->direccion << endl;
				cout << "Fecha de Nacimiento = " << setfill('0') << setw(2) << resultado->f_nac.dia << "/" << resultado->f_nac.mes << "/" << resultado->f_nac.agno << endl;
			}
			cout << endl;
			system("pause");
			break;
			Contacto *Crear_nodo();
			{
				Contacto *x;
				x = (struct Contacto *) malloc(sizeof(struct Contacto));
				system("cls");
				cout << "\n\n\tIngrese Numero de contacto: ";
				cin >> x->rut;
				getchar();
				cout << "\n\n\tIngrese Nombre: ";
				cin.getline(x->nombre, 100);
				cout << "\n\n\tIngrese Direccion: ";
				cin.getline(x->direccion, 100);
 
				cout << "\n\n\tIngrese Dia Nacimiento: ";
				cin >> x->f_nac.dia;
				cout << "\n\n\tIngrese Mes nacimiento (en numero): ";
				cin >> x->f_nac.mes;
				cout << "\n\n\tIngrese Anyo Nacimiento: ";
				cin >> x->f_nac.anyo;
				x->siguiente = NULL;
				return x;
 
 
			} 
   
 


