本地运行正确,测试段错误
#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++#