删除字符串的奇数位,到第4位时出错

目的是删除(1234567)中的奇数位字符
采用双链表储存,之后按位删除 Insert()头插法插入 Delet()删除
show()输出 ; finded()求链表长度;
删除第4个结点时出错

#include<stdio.h>
#include<stdlib.h>
char *a="*abcdefghijklmnopqrs";
char *a1="*1234567";
typedef struct LNode{
    LNode*next,*front;
    char data;
}LNode,*LinkList;

void Insert(LinkList &L,char x){
    LNode*q=(LNode*)malloc(sizeof(LNode));
    q->data=x;
    q->next=L->next;
    if(L->next!=NULL) L->next->front=q;
    q->front=L;
    L->next=q;
} 

void Init(LinkList &L){
    L=(LNode*)malloc(sizeof(LNode));
    L->next=NULL;
    L->front=NULL;
    for(int i=1;i<=1;i++){
        for(int j=7;j>0;j--){
            Insert(L,a1[j]);
        }
    }
}

int findend(LinkList &L){
    int cnt=0;
    for(LNode*q=L->next;q!=NULL;q=q->next){
        cnt++;
    }
    return cnt;
}


void Show(LinkList &L){
    
    for(LNode*q=L->next;q!=NULL;q=q->next){
        printf("%c ",q->data);
    }
    printf("\n");
}

void Delet(LinkList &L, int x){
    LNode*p;
    int cnt=1;
    for(p=L->next;cnt<x;cnt++,p=p->next); 
    p->next->front=p->front;
    p->front->next=p->next;
    free(p);
} 

void Yun(LinkList &L){
    while(1){
        for(int i=1;i<=4;i++){ //这里删除到第4个就无法运行了 
            Delet(L,i);
            Show(L);
        }
        Show(L); 
    }
}



int main(){
    LinkList L;
    Init(L);
    Show(L);
    Yun(L);

    return 0;
}