当前位置: 技术问答>linux和unix
C中Insert数组问题
来源: 互联网 发布时间:2016-07-19
本文导语: 本帖最后由 sunchaohuang 于 2009-11-27 11:38:06 编辑 typedef struct BOOK BOOKLIST[100]; typedef struct BOOK BOOK; struct BOOK { int id; int *name; }; void insert(BOOKLIST arrlist,BOOK arg1) { } void insert(void *arrlist,void *arg1) { } int main(void) { BOOK BK; BOOKLI...
typedef struct BOOK BOOKLIST[100];
typedef struct BOOK BOOK;
struct BOOK
{
int id;
int *name;
};
void insert(BOOKLIST arrlist,BOOK arg1)
{
}
void insert(void *arrlist,void *arg1)
{
}
int main(void)
{
BOOK BK;
BOOKLIST BOOKS;
(&BK)->id = 1;
(&BK)->name = "aa";
insert(BOOKS,BK);
}
请问如何实现insert(BOOKLIST arrlist,BOOK arg1)函数和insert(void *arrlist,void *arg1)函数
使BK结构体插入到BOOKS数组的最后一项
|
从后往前遍历BOOKS数组,找第一个id或name不为空的位置,插在这个位置之后。
|
你用定义的BOOKLIST 声明BOOKS ,BOOKS里面的数据并没有定义,id和name可能并不是0和NULL。
建议你在申明BOOKS时使用memset将里面的数据都设为0。然后就可以使用id或name进行遍历。但更好的变法是将第一项的id的值设置成BOOKS里已有的数据项的项数,这样插入的时候可以直接使用下标,比遍历要快很多。
建议你在申明BOOKS时使用memset将里面的数据都设为0。然后就可以使用id或name进行遍历。但更好的变法是将第一项的id的值设置成BOOKS里已有的数据项的项数,这样插入的时候可以直接使用下标,比遍历要快很多。
|
找到最后位置,插入!