单链表冒泡排序异常退出

问题遇到的现象和发生背景

数据结构单链表冒泡排序,异常退出

用代码块功能插入代码,请勿粘贴截图
#include
#define OK 1
#define FALSE 0

using namespace std;

typedef int status;
typedef struct LNode{
    int data;
    struct LNode * next;
}LNode ,*LinkList;
status output_LinkList(LinkList L) {
    LNode* p = L->next;
    printf("\n链表中的数据为:");
    while (p) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
    //    p=p->next;
    return OK;
}
status init_LinkList1(LinkList& L)
{
    int n;
    printf("请输入将要建立的链表的长度:");
    cin >> n;
    cout << endl;
    printf("请输入值:");
    LNode* newbase = new LNode;
    if (newbase) {
        L = newbase;
        L->next = 0;
        //    printf("建立头节点成功\n");
    }
    else return 0;//建立头节点 
    LNode* r = L; //尾指针 
    LNode* p;
    for (int i = 1; i <= n; ++i)
    {
        LinkList newbase = new LNode;
        if (newbase)
        {
            p = newbase;
            cin >> p->data;
            p->next = NULL;
            r->next = p;
            r = p;
            //    printf("赋值成功\n");
        }
    }
    //r->next = 0;
    printf("赋值成功\n");
    return OK;
}
int main()
{
    cout << "初始化表1" << endl;
    LinkList L1=0;
    init_LinkList1(L1);
    cout << "初始化表2:" << endl;    
    LinkList L2=0;
    init_LinkList1(L2);
       


    LNode* p = L1->next;
    LNode* q = L2->next;
    int count1 = 1;
    int count2 = 1;


    while (p->next != 0)
    {
        p = p->next;
        count1++;
    }
    while (q->next != 0)
    {
        q = q->next;
        count2++;
    }



    p->next =L2->next;
    int count = count1 + count2;


LNode* s = L1->next->next;
    int n = 0;
    LNode* r = L1->next;
    for (int i = 0; i < count - 1; ++i)
    {
        n = count - 2- i;
        while (n--)
        {

            if (r->data > s->data)        //递减排序
            {
                int t = 0;
                t = r->data;
                r->data = s->data;
                s->data = t;
                cout << "交换执行" << endl;
            }
            r = r->next, s = s->next;
        }
    }
    output_LinkList(L1);
}

运行结果及报错内容

异常退出

我的解答思路和尝试过的方法

已解决:问题在计数器和指针回拨

这种程序只能自己 DEBUG 在退出点前设断点