本地运行正确,测试段错误
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
#define MAXSIZE 100 //链表可能达到的最大长度
typedef struct LNode
{
ElemType data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList为指向结构体LNode的指针类型
Status InitList(LinkList &L) //算法2.6 单链表的初始化
{
//构造一个空的单链表L
L = new LNode; //生成新结点作为头结点,用头指针L指向头结点
L->next = NULL; //头结点的指针域置空
return OK;
}
int ListLength(LinkList L)
{
/****在此下面完成代码***************/
LinkList q = L->next;
int i=0;
while(q)
{
q = q->next;
i++;
}
return i;
/***********************************/
}
Status ListInsert(LinkList &L, int i, ElemType e) //算法2.9 单链表的插入
{
/****在此下面完成代码***************/
if(i<=0||i>ListLength(L)+1||ListLength(L)==MAXSIZE)
return ERROR;
else
{
LinkList NewNode;
NewNode = new LNode;
int j=0;
LinkList p = L;
while(j<i-1)
{
p = p->next;
j++;
}
NewNode->next = p->next;
p->next = NewNode;
NewNode->data = e;
return OK;
}
/***********************************/
} //ListInsert
void inverse(LinkList &L)
{
/****在此下面完成代码***************/
LNode* pre;
LNode* cur;
LNode* aft;
cur = L->next;
pre = L->next;
aft = cur->next;
while(aft)
{
cur = aft;
aft = aft->next;
cur->next = pre;
pre = cur;
}
L->next->next=NULL;
L->next = cur;
/***********************************/
}
Status ListDelete(LinkList &L, int i) //算法2.9 单链表的删除
{
/****在此下面完成代码***************/
if(i<=0||i>ListLength(L))
return ERROR;
else{
int j=0;
LinkList p = L;
while(j<i-1){
p = p->next;
j++;
}
delete p->next;
p->next = p->next->next;
return OK;
}
/***********************************/
} //ListDelete
void ListPrint(LinkList L)
{
LNode *p;
cout << '[';
for(p = L->next; p; p = p->next)
cout << p->data << (p->next ? ',' : ']');
}
void read_num(LinkList &L, int n, char *l)
{
int i=0, j=1;
int f=0;
ElemType e=0;
while(l[i]!='\0')
{
//cout << l[i] << '\n';
if(f)
{
if(l[i]>='0'&&l[i]<='9')
{
e=e*10;
}
else
{
ListInsert(L,j,e);
j++;
e=0;
}
}
if(l[i]>='0'&&l[i]<='9')
{
f=1;
e=e+l[i]-'0';
}
else
{
f=0;
}
i++;
}
}
int main()
{
LinkList L;
int N;
cin >> N;
for(int i=0; i<N; i++)
{
int n;
char s[100000];
char l[300000];
cin >> s;
cin >> n;
cin >> l;
InitList(L);
read_num(L,n,l);
int j=0,f=1;
while(s[j]!='\0')
{
if(s[j]=='R')
{
inverse(L);
}
if(s[j]=='D')
{
int r=0;
r=ListDelete(L,1);
if(r==ERROR)
{
f=0;
cout << "error" << '\n';
break;
}
}
j++;
}
if(f)
{
ListPrint(L);
cout << '\n';
}
}
return 0;
}
快救救孩子吧
#段错误##C/C++#

查看17道真题和解析