#include <iostream>
#include<stdlib.h>
#define max 100
typedef int element;
typedef struct sList {
element data[max];
int listLen;
}seqList;
void initialList(seqList* L) {
L->listLen = 0;
}
int listLength(seqList* L) {
return L->listLen;
}
int listDelete(seqList* L, int i) {
int j,k;
if (i<1 || i>L->listLen)
return 0;
else if (L->listLen <= 0)
return 0;
else {
for (j = i; j < L->listLen; j++) {
L->data[j - 1] = L->data[j];
k++;
L->listLen--;
}
return k;
}
}
int repeat(seqList* L ) {
int j=0,i;
for (i = 0; i < L->listLen - 1; i++) {
while (i)
{
if (L->data[i] == L->data[i + 1])
j += listDelete(L, i + 1);
else
break;
}
}
return j;
}
int main() {
seqList* L = (1,1,2,2,2,3,4,5,5,5,6,6,7,7,8,8,8,9);
repeat(L);
我这代码还没写完,但是主函数里报错了,说找不到用户定义的文本运算符
你没有写给顺序表增加值的函数啊
#include <iostream>
#include<stdlib.h>
#define max 100
typedef int element;
typedef struct sList {
element data[max];
int listLen;
}seqList;
void initialList(seqList* L) {
L->listLen = 0;
}
int listLength(seqList* L) {
return L->listLen;
}
int listAdd(seqList *L, int n){
if(L->listLen >= max)
return 0;
L->data[L->listLen++] = n;
return 1;
}
int listDelete(seqList* L, int i) {
int j,k=0;
if (i<1 || i>L->listLen)
return 0;
else if (L->listLen <= 0)
return 0;
else {
for (j = i; j < L->listLen; j++) {
L->data[j - 1] = L->data[j];
k++;
}
L->listLen--;
return k;
}
return 0;
}
int repeat(seqList* L ) {
int j=0,i;
for (i = 0; i < L->listLen-1; i++) {
if (L->data[i] == L->data[i + 1])
{
j += listDelete(L, i + 1);
i--;
}
}
return j;
}
void listPrint(seqList *L)
{
for(int i=0;i<L->listLen;i++)
printf("%d ",L->data[i]);
}
int main() {
int a[18] = {1,1,2,2,2,3,4,5,5,5,6,6,7,7,8,8,8,9};
seqList *L = new seqList;
initialList(L);
for(int i=0;i<18;i++)
listAdd(L,a[i]);
repeat(L);
listPrint(L);
delete L;
system("pause");
}