创建散列表时后,初始化写入时提示:E0153 表达式必须具有类类型,但它具有类型 "cells"
E0153 表达式必须具有类类型,但它具有类型 "cells"
使用“.”时(表达式必须具有类类型,但它具有类型 "cells")
#include<stdio.h>
#include<stdlib.h>
typedef enum { empty, deleted, written }information;
typedef struct node* cells;
struct node {
int data;
information info;
};
int main() {
cells *cell;
cell = (cells*)malloc(sizeof(cells));
int n, i, jude, key, data;
scanf_s("%d", &n);
for (i = 0; i < 11; i++) {
cell[i].info = empty;
}
}
使用“->”,运行时超时跳出循环,(提示正在从cell读取无效数据)
#include<stdio.h>
#include<stdlib.h>
typedef enum { empty, deleted, written }information;
typedef struct node* cells;
struct node {
int data;
information info;
};
int main() {
cells *cell;
cell = (cells*)malloc(sizeof(cells));
int n, i, jude, key, data;
scanf_s("%d", &n);
for (i = 0; i < 11; i++) {
cell[i]->info = empty;
}
}
完整代码
#include<stdio.h>
#include<stdlib.h>
typedef enum { empty, deleted, written }information;
typedef struct node* cells;
struct node {
int data;
information info;
};
int main() {
cells *cell;
cell = (cells*)malloc(sizeof(cells));
int n, i, jude, key, data;
scanf_s("%d", &n);
for (i = 0; i < 11; i++) {
cell[i]->info = empty;
}
for (i = 0; i < n; i++) {
scanf_s("%d", &jude);
if (jude == 1) {
scanf_s("%d", &key);
data = key;
while (1) {
key = key % 11;
if (cell[key]->info != written) {
cell[key]->data = data;
cell[key]->info = written;
break;
}
else {
key++;
}
}
}if (jude == 2) {
scanf_s("%d", &key);
data = key;
key = key % 11;
while (data != cell[key]->data) {
key++;
}cell[key]->info = deleted;
}if (jude == 3) {
scanf_s("%d", &key);
int count = 1;
data = key;
key = key % 11;
while (data != cell[key]->data) {
key++;
count++;
}printf("%d", count);
}
}return 0;
}