c-如何从Struct中删除元素



我想知道如何使用递减来删除以前输入的信息

case 4: printf("Remove Employeen");
printf("===============n");
do{
printf("Enter Employee ID: ");
scanf("%d", &number);
int i;
for(i=0;i<NOE; i--){
if(number == emp[i].Int_Num){
printf("Employee %d will be removed", emp[i].Int_Num);
// for(i=0;i<NOE; i++){

-- emp[i].Int_Num, --emp[i].Salary, --emp[i].Age;
// scanf("%11lf", &emp[i].Salary);
flag = 1;
break;

元素数量以任意顺序频繁变化的集合的典型数据结构是链表。(或者,如果你需要更快的访问速度,并且有一个订单标准,比如你的员工编号,一个排序树)。您将使用malloc()分配新元素(此处:employees),并使用free将它们从内存中真正删除。

或者,如果有已知的最大员工数量,并且您有足够的内存,则可以使用数组,就像您在这里所做的那样。数组中元素的数量将是预期的最大雇员数量;因此,即使员工很少,程序也总是需要最大的内存量。另一方面,程序的内存占用在编译时是静态已知的,这可能是一个优势。

数组中的元素数不能更改(除非动态分配整个数组,并在需要时重新分配)。正如Bo Persson所建议的,添加新员工或删除现有员工将通过对正在使用的元素进行标记来完成。这可能是一个额外的布尔标志,或者是一个现有字段中的特殊值。

实际上,您将以这种方式编程自己的粗略动态内存管理,将数组用作"竞技场"。它可能会比你只使用内置的更麻烦、更慢。

最新更新