18,777
社区成员
发帖
与我相关
我的任务
分享
struct number
{
int num;
struct list_head list;
};
int main(void) {
struct number *tmp;
struct list_head *pos,*n;
int num_i;
//定义并初始化一个链表头
struct number number_head;
INIT_LIST_HEAD(&number_head.list);
for(num_i=0;num_i<10;num_i++)
{
tmp=(struct number*)malloc(sizeof(struct number));
tmp->num=num_i;
//吧这个节点链接到链表后面
//这里因为每次的节点都是加在number_head的后面,所以先进来的节点就在链表的最后面
list_add(&(tmp->list),&(number_head.list));
}
//下面把这个链接表中各个节点的值打印出来
printf("\n");
printf("-----------the list------------");
list_for_each(pos,&number_head.list)
{
tmp = list_entry(pos, struct number, list);
printf("number: %d \n",tmp->num);
}
return 0;
}
/**
* list_entry - get the struct for this entry
* @ptr: the &struct list_head pointer.
* @type: the type of the struct this is embedded in.
* @member: the name of the list_struct within the struct.
*/
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)