zoukankan      html  css  js  c++  java
  • 内核链表范例(首创)

    #include<stdlib.h>
    #include<stdio.h>
    #include<malloc.h>
    #include<kernel_list.h>
    typedef struct node
    {
      int data;
      struct list_head list;
    }listnode,*linklist;

    linklist init_list()
    {
      linklist L =malloc(sizeof(listnode));
      INIT_LIST_HEAD(&L->list);//注意参数的类型  
      return L;
    }
    struct list_head *pos;
    void show_list(struct list_head *pos,linklist L)
    {
      list_for_each(pos,&L->list)
      {

        listnode *p = list_entry(pos,listnode,list);
        printf("%d ",p->data);

      }
      printf(" ");

    }
    int main()
    {
      linklist L = init_list();
      int i;
      for(i=1;i<=10;i++)
      {
        linklist new = malloc(sizeof(listnode));
        new->data = i;
        list_add_tail(&new->list,&L->list);

      }

    /*listnode *q = list_entry(pos,listnode,list);
      listnode *p = list_entry(pos->prev,listnode,list);
      while(p!=q)
      */使用,证明是失败的
      int j=0;
      struct list_head *q;
    list_for_each_prev(pos,L->list.next)
    {
    //j++; struct list_head *q;
      listnode *p = list_entry(pos->prev,listnode,list);//获取数字10所在节点的地址,从后向前指
    //printf("%d ",p->data);//这个调试信息起到了关键的作用间接的让我明白了指针的移动行为。

      if(p->data%2==0&&j==1)
      {
        list_move_tail(&p->list,&L->list);//这个函数每运行完一次,p指针都会指向它的前一个数据。
    // printf("%d ",p->data);
      pos = pos->next;//注意指针指向的变化。
      j=0;
      }
      else
      {
        j=1; //j的妙用,特别注意指针的指向。 使用的非常巧妙
        continue;
      }
    // if(j==8)
    // break;

    }
    //show_list(pos,&L->list);
      list_for_each(pos,&L->list)
      {

        listnode *p = list_entry(pos,listnode,list);
        printf("%d ",p->data);
    // printf("ok");

      }
      printf(" ");
    }

  • 相关阅读:
    多线程
    ERP概念介绍
    Servlet生命周期
    springmvc工作流程
    spring事务管理的接口
    解决主从备份Slave_SQL_Running:No
    实现Mysql主从备份
    springboot集成mybatis进行开发
    SpringBoot 入门第一章
    Hibernate 关联关系映射
  • 原文地址:https://www.cnblogs.com/defen/p/5205076.html
Copyright © 2011-2022 走看看