问题遇到的现象和发生背景
数据结构单链表冒泡排序,异常退出
用代码块功能插入代码,请勿粘贴截图
#include<iostream>
#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);
}
运行结果及报错内容
异常退出
我的解答思路和尝试过的方法
无