问题描述
- 菜鸟求救,这个程序,做ACM题目时两个pass,三个错了,提示是unknown error。。。
-
#include
#include
#include
#define MAXSIZE 1000
static int h[MAXSIZE];
int k = 0, x=0;
typedef int datatype;
typedef struct
{
datatype a[MAXSIZE];
int size;}seq_list;
void init(seq_list *L)
{
L->size = 0;
}
void Insert(int number,seq_list *L)
{
L->a[L->size] = number;
L->size = L->size + 1;
x++;
}
void Delete(int pos, seq_list *L,int n)
{
int i;
x++;
if (L->size == 0 || pos > L->size)
{
h[k] = x;
k++;
}
for (i = pos-1 ; i < L->size; i++)
{
L->a[i] = L->a[i + 1];
L->size--;
}}
void put(seq_list *L)
{
int i;
if (L->size == 0)
printf("None.");
else
for (i = 0; i < L->size; i++)
printf("%d ", L->a[i]);
}
int main()
{
char p[1000][7];
int m,j,num[MAXSIZE];
seq_list L;
init(&L);
scanf("%d", &m);
x++;
while (m != 0)
{
for (j = 0; j < m; j++)
{
scanf("%s%d", p[j], &num[j]);
if (strcmp(p[j], "Insert") == 0)
Insert(num[j], &L);
else
Delete(num[j], &L, j + 1);
}
scanf("%d", &m);
x++;
}
k = 0;
while (h[k] != 0)
{
printf("Error(line #%d): element does not exist.n", h[k]);
k++;
}
put(&L);
system("pause");
return 0;
}
题目描述
实现对一个顺序表的元素的插入与删除。输入描述
输入数据有多组。每组第一行输入一个数字m(m<=1000),表示有m个操作。接下来有m行,每行代表一次操作。一共有两种操作,即插入与删除。
插入操作的输入格式:Insert number。表示在顺序表尾插入一个元素number。
删除操作的输入格式:Delete pos。表示删除第pos个元素。
测试数据保证插入操作必然合法,但不保证删除操作一定合法,即可能要求删除的位置没有元素。(顺序表第一个元素的位置为1,其中顺序表的元素均为整数。)
当m=0时输入结束。输出描述
当删除操作不合法时,需要输出”Error(line #i): element does not exist.”其中#i表示第几行的操作,每次输出占一行。
所有操作完成后,输出顺序表中的元素,每个元素用一个空格隔开,最后一个元素后面能有空格。
若最终线性表中没有元素则输出”None.”。输入样例
7
Insert 4
Insert 3
Delete 2
Delete 2
Insert 9
Delete 1
Insert 6
0输出样例
Error(line #4): element does not exist.
9 6
解决方案
元素不存在,看下具体的错误呢
解决方案二:
#4行在哪里,有没有检查上下文