#include <stdlib.h>/*标准库函数*/
#include <stdio.h>/*I/O函数*/
#include <string.h>/*字符串函数*/
#include <ctype.h>/*字符操作函数*/

typedef struct bookinfo
{
 int id;
 char name[20];
 int count;
 char nametype[20];//分类名称
 char descript[50];//描述
 int country;//国家
}bookinfo;
static bookinfo books;

typedef struct bookcontent
{
 int sectionid;//第一章索引
 char sectionname[10];//第一章
 char paragraphname[10];//第二段
}bookcontent;

typedef enum booktype
{
 STORY=0,
 TECHNOLOGY,
 MISC  
}booktype;

typedef enum countrytype
{
 INNER=0,//国内
 OUTER, //国外 
}countrytype;

//初始化信息
int bookinfo_init(void)
{
 memset(&books, 0x00, sizeof(books));
 books.id=1;
 strcpy((char *)books.name,"方欣");
 books.count=50;
 strcpy((char *)books.nametype,"武打");
 strcpy((char *)books.descript,"方欣2011年09月01日正式入读国定实验幼儿园,她很开心!");
 books.country=-1;
 return 1; 
}

//int的指针的指针 变量存放的是指针
int bookcode=33;
int bookinfo_get_bookcode(int **ppbookcode)
{
 if(NULL == ppbookcode)
 {
  return 0;
 }
 *ppbookcode = &bookcode;//数值变量地址->(&数值变量)
 
 return 1;
}

//char的指针的指针  变量存放的是指针
char bookserial[20]="FX0000000098";
int bookinfo_get_bookserial(char **ppbookserial)
{
 if(NULL == ppbookserial)
 {
  return 0;
 }
 *ppbookserial = bookserial;//数组变量地址->(数组变量名)
 
 return 1;
}
//复合结构的指针的指针 变量存放的是指针
int bookinfo_get(bookinfo **ppbooks)
{
 if(NULL == ppbooks)
 {
  return 0;
 }
 *ppbooks = &books;
 
 return 1;
}
//获取 subtitle
int bookinfo_get_subtitle(char* title)
{
 int len;
  len = sizeof(char);
 title== (char*)malloc(len);
 memset(title,0x00,len);//初始化指针内存
 strcpy(title,"方欣上学");
 return 1;
}

//设置 bookcontent
int bookinfo_set_bookcontent(bookcontent *pbookcontent)
{
 if (NULL == pbookcontent)
 {
  return 0;
 }
 pbookcontent->sectionid = 12;
 strcpy(pbookcontent->sectionname,"第72章");
 strcpy(pbookcontent->paragraphname,"第3回");
 return 1;
}

//获取 bookcontent
int bookinfo_get_bookcontent(bookcontent *pbkcontent)
{
 if (NULL == pbkcontent)
 {
  return 0;
 }
 bookcontent pkcontent;
 int vr;
 vr=bookinfo_set_bookcontent(&pkcontent);
 if (0 == vr)
 {
  return 0;
 }
 pbkcontent->sectionid = pkcontent.sectionid;
 strcpy(pbkcontent->sectionname,pkcontent.sectionname);
 strcpy(pbkcontent->paragraphname,pkcontent.paragraphname);
 return 1;
}

int bookinfo_get_id(int* id)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook))
 {
  return 0;
 }
 (*id) = pbook->id;
 return 1; 
}

int bookinfo_get_name(char* name)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook)| (NULL == name))
 {
  return 0;
 }
 strcpy(name,pbook->name);
 return 1;  
}

int bookinfo_get_count(int* count,int type)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook))
 {
  return 0;
 }
 switch(type)
 {
  case 0:
   *count= pbook->count;
  break;
  case 1:
   *count= 80;
  break;
 }

return 1; 
}

int bookinfo_get_nametype(char* nametype,booktype type)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook))
 {
  return 0;
 }
 switch(type)
 {
  case STORY:
   strcpy(nametype,"故事");
  break;
  case TECHNOLOGY:
   strcpy(nametype,"技术");
  break;
  case MISC:
   strcpy(nametype,pbook->nametype);
  break;
  default:
  break;
 }

return 1; 
}
//获取描述
int bookinfo_get_descript(char* descript)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook)||(NULL == descript))
 {
  return 0;
 }
 if(strcmp(pbook->descript, "") == 0)
 {
  descript[0]='\0';//获取 descript[0]={0};
  return 1;
 }
 strcpy(descript,pbook->descript);
 return 1;  
}
//设置描述
int bookinfo_set_descript(char* descript)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook)||(NULL == descript))
 {
  return 0;
 }
 strcpy(pbook->descript, descript);
 return 1;  
}
//获取地区
int bookinfo_get_country(countrytype* country)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook))
 {
  return 0;
 }
 *country=pbook->country;
 return 1;  
}
//设置地区
int bookinfo_set_country(countrytype country)
{
 bookinfo *pbook;
 int r;
 r = bookinfo_get(&pbook);
 if ((1!= r) || (NULL == pbook))
 {
  return 0;
 }
 pbook->country=country;
 return 1;  
}
//遍历二维数组
int foreachArray()
{
 int a[5][3]={0};
 int i=0;
 int j=0;
 int count=0;
 for(i=0;i<5;i++)
 {
  for(j=0;j<3;j++)
  {
   count++;
   a[i][j] =(i+j);
   printf("%d ",a[i][j]);
   if((count%3)==0)
   {
    printf("%d\n",a[i][j]); 
   }
  }
 }
 return 1;
}
/*********************单链表***************************/
//单链表头节点(序号为0) 无数据域 有指针域 存放第一个节点的首地址
//单链表尾节点            有数据域 有指针域 地址域值为NULL空
typedef struct student
{
 int id;
 char name[15];
 struct student* next;//下一个节点的指针
}student;

//初始化线性表,即置单链表的表头指针为空
void init_link(student **pphead)
{
 *pphead=NULL;
 printf("init_link函数执行,初始化成功\n");
}

/*尾插法建立链表*/ 
student* creat_single_tail_link(student* phead)
{
 student* pstudent;//工作节点
 student* ptail;//尾节点
 pstudent=NULL;
 ptail=NULL;
 int i=0;
 while(i<5)
 {
  pstudent=(student*)malloc(sizeof(student));
  if(pstudent==NULL)exit(0);//内存分配失败
  memset(pstudent,0,sizeof(student));

pstudent->id=i;
  sprintf(pstudent->name,"%s%d","方欣_",i);

if (phead==NULL)
  {
   phead=pstudent;//新结点插入空表 
  }
  else
  {
   ptail->next=pstudent;//将新结点插到ptail之后 
  }
  
   ptail=pstudent;//尾指针指向新表尾
  i++;
 }
 if (ptail!=NULL)ptail->next=NULL;//对于非空表,将尾结点指针域置空head=s;
 return phead;
}
/*头插法建立链表*/ 
student* creat_single_head_link(student* phead)
{
 student* pstudent;//工作节点
 pstudent=NULL; 
 phead=NULL;
 
 int i=0;
 while(i<5)
 {
  /*头插法建立链表*/ 
  pstudent=(student*)malloc(sizeof(student));
  if(pstudent==NULL)exit(0);//内存分配失败
  memset(pstudent,0,sizeof(student));
  
  pstudent->id=i;
  sprintf(pstudent->name,"%s%d","方欣_",i);

pstudent->next= phead;//第i=0时 pstudent->next=NULL; 链尾
  phead=pstudent;
  i++;
 }
 return phead;
}
//打印链表,链表的遍历
void print_link(student *phead) 

    if(phead==NULL)   //链表为空 
    { 
        printf("print_link函数执行,链表为空\n"); 
        return;
    } 
    while(phead !=NULL) 
    { 
        printf("%d %s\n",phead->id,phead->name); 
        phead = phead->next; //指针下移
        // phead指向下一个结点 ,类似于数组里面的 i++
    } 
    printf("\n"); 
}

/*打印链表,链表的遍历
void display(student *phead) 

    struct student *p = NULL; 
    for(p = phead; p != NULL; p = p->next) 
    { 
        printf("%d %d\n",p->number,p->grade); 
    } 
}  */

//释放单链表中所有的结点,使之成为一个空表 
void clear_link(student *phead) 

    if(phead == NULL) 
    { 
        printf("clear_link函数执行,链表为空\n"); 
        return; 
    } 
    while(phead->next != NULL) 
    { 
     student *ptmp= phead->next;//保存下一结点的指针 
        free(phead); // 释放内存
        phead = ptmp;//表头下移 
    } 
    printf("clear_link函数执行,链表已经清除\n"); 

//清除单链表 
void delete_all_link(student *phead) 

    if(phead == NULL) 
    { 
        printf("clear_link函数执行,链表为空\n"); 
        return; 
    } 
    while(phead->next != NULL) 
    { 
     student *ptmp= phead->next;//保存下一结点的指针 
        free(phead); // 释放内存
        phead = ptmp;//表头下移 
    } 
    printf("clear_link函数执行,链表已经清除\n"); 
}
//返回单链表的长度
int length_link(student *phead) 

    int i = 0; 
    while(phead != NULL) 
    { 
        i++;         //遍历链表大小比链表的实际长度小1 
        phead = phead->next; 
    } 
    printf("length_link函数执行,链表长度 %d \n",i); 
    return i;    //链表的实际长度 
}

//检查单链表是否为空,若为空则返回1,否则返回0
int isempty_link(student *phead) 

    if(phead == NULL) 
    { 
        printf("isempty_link函数执行,链表为空\n"); 
        return 1; 
    } 
    printf("isempty_link函数执行,链表非空\n"); 
    return 0; 
}

//返回单链表中第p个结点中的元素,若p超出范围,则停止程序运行
int get_node_link(student *phead, int p) 

    int i=0; 
    if(p < 1) 
    { 
        printf("get_node_link函数执行,p值非法\n"); 
        return 0; 
    } 
    if(phead == NULL) 
    { 
        printf("get_node_link函数执行,链表为空\n"); 
        return 0; 
    } 
    while(phead !=NULL) 
    { 
  //i++  :先引用后增加
  //++i  :先增加后引用
        ++i; 
        if(i == p) 
        { 
            break; 
        } 
        phead = phead->next; //移到下一结点 
    } 
    if(i < p)                  //链表长度不足则退出 
    { 
        printf("get_node_link函数执行,p值超出链表长度\n"); 
        return 0;  
    } 
    return phead->id; 
}

//从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL 
int* get_node_address_link(student *phead, int x) 

    if(NULL == phead) 
    { 
     printf("get_node_address_link函数执行,链表为空\n"); 
        return NULL; 
    } 
    if(x < 0) 
    { 
        printf("get_node_address_link函数执行,给定值X不合法\n"); 
        return NULL; 
    } 
    while((phead->id != x) && (NULL != phead->next)) //判断是否到链表末尾,以及是否存在所要找的元素 
    { 
        phead = phead->next; 
    } 
    if((phead->id != x) && (phead != NULL)) 
    { 
        printf("get_node_address_link函数执行,在链表中未找到x值\n"); 
        return NULL; 
    } 
    if(phead->id == x) 
    { 
        printf("get_node_address_link函数执行,元素 %d 的地址为 0x%x\n",x,&(phead->id)); 
    } 
    return &(phead->id);//返回元素的地址 
}

//把单链表中第p个结点的值修改为x的值,若修改成功返回1,否则返回0
int update_node_link(student *phead,int p,int x) 

    student *pstudent; 
    pstudent = phead; 
    int i = 0; 
    if(pstudent==NULL) 
    { 
        printf("update_node_link函数执行,链表为空\n"); 
        return 0; 
    } 
    if(p < 1) 
    { 
        printf("update_node_link函数执行,p值非法\n"); 
        return 0; 
    } 
    while(pstudent !=NULL) 
    { 
        ++i; 
        if(i == p) 
        { 
            break; 
        } 
        pstudent = pstudent->next; //移到下一结点 
    } 
    if(i < p)                  //链表长度不足则退出 
    { 
        printf("update_node_link函数执行,p值超出链表长度\n"); 
        return 0; 
    } 
    phead =pstudent; 
    phead->id = x; 
    printf("update_node_link函数执行\n"); 
    return 1; 
}
 
//向单链表的表头插入一个元素 */
int insert_head_link(student **pphead,student node) 

    student *pstudent; 
    pstudent = (student *)malloc(sizeof(student)); 
    memset(pstudent,0,sizeof(student)); 
    pstudent->id = node.id;
 strcpy(pstudent->name,node.name);
 
    pstudent->next = *pphead; //当前节点的下一节点就是表头
    *pphead = pstudent; 
    printf("insert_head_link函数执行,向表头插入元素成功\n"); 
    return 1; 
}

//向单链表的末尾添加一个元素 */
int insert_tail_link(student **pphead,student node) 

    student *pstudent; //新节点
    student *ptail; 
    student *ptmp; //定义一个临时链表节点用来存放第一个节点 
   
 ptail = *pphead; 
    ptmp = ptail;
  
    pstudent = (student *)malloc(sizeof(student)); //新节点分配内存 
    memset(pstudent,0,sizeof(student)); 
    pstudent->id = node.id;
 strcpy(pstudent->name,node.name); 
    while(ptail->next != NULL) 
    { 
        ptail = ptail->next; 
    } 
    ptail->next = pstudent;   //将链表末尾节点的下一结点指向新添加的节点 
   
 *pphead = ptmp; 
    printf("insert_tail_link函数执行,向表尾插入元素成功\n"); 
    return 1; 
}

//删除链表中的一个数据
student *delete_node_link(student *phead,int val)
{
 student *pstudent;//当前节点
 student *ptail;//尾节点
    if(phead==NULL)//头节点
 {
  printf("delete_node_link函数执行,链表为空\n");
   exit(0); 
 }
    pstudent=phead;//当前节点指向头节点
    while(val!=pstudent->id && pstudent->next!=NULL)//若pstudent -> next == NULL 则为空链表 
 {
        ptail=pstudent;
        pstudent=pstudent->next;
 }
 //pstudent指向的不是所要找的结点,后面还有结点,
 //使ptail , pstudent向后移动一个结点 ,并继续寻找
    if(val==pstudent->id)
    {
        if(phead==pstudent)
  {
   //找到在第一个结点处 ,删除就是使phead 指向 pstudent所指向的结点
   phead=pstudent->next; 
  }
  else if(pstudent -> next == NULL)
  {
   ptail -> next = NULL;  //找到在尾结点  
  }
        else
  {
   //找到在中间结点pstudent,用ptail结点代替pstudent的位置
   ptail->next=pstudent->next; 
  }
  printf("delete_node_link函数执行:%d\n",val);
  free(pstudent); //释放当前节点
    }
    else
    {
     printf("delete_node_link函数执行,失败:%d\n",val); 
    }
    return phead;
}

//链表冒泡排序
student *pop_sort_link(student *pstudent)
{
    student *pfront;//前一节点
 student *pback;//后一节点
    int tmp;
    for(pfront = pstudent; pfront!=NULL; pfront = pfront->next)
    {
        for(pback = pstudent; pback->next!=NULL; pback=pback->next)
        {
            if(pfront == pback)continue;
            if(pfront->id > pback->id)
            {
                tmp = pfront->id;
                pfront->id = pback->id;
                pback->id = tmp;
            }
        }
    }
    return pstudent;
}

//链表反转
student* reverse_link(student* phead)
{
 if(phead==NULL) 
 { 
  printf("reverse_link函数执行,链表为空\n"); 
  return NULL; 
 }
 student* prever;//反转链表变量
 prever=NULL;
 
 while(phead!=NULL)
 {
   /* ptmp临时保存phead后面的链(指针),因为马上就会被写掉 */
  student* ptmp=phead->next;
   /* 下面两行实际上将phead插入链表prever的头部中 */
  phead->next=prever;//操作链指向 即prever的存放内存地址
  prever=phead;//操作结点 将 phead结点写入 prever
  /* 恢复phead的值,使phead指向下一结点 */
  phead=ptmp;
 }
 /* 这时phead应该为NULL */
 return prever;
}

//链表是否存在环
int is_exits_loop(student* phead)
{
 //定义两个临时链表变量
 student* slow;
 student* fast;
 
 //将链表同时赋给两个链表变量
 slow=phead;
 fast=phead;
 while(fast&&fast->next!=NULL)
 {
  slow=slow->next;// 慢链表一次下移一个节点
  fast=fast->next->next;// 快链表一次下移两个节点
  if(fast==slow) return 1;//存在环 ,退出返回1
 }
 return 0;
}
/*********************单链表***************************/
int main(int argc, char *argv[])
{
 int i;
    char s[128];
    int ret;
    char bookname[20];
 int bookid;
 int bookcount;
 char bookcatory[20];
 char bookdes[50];
 countrytype countryer;
 bookcontent bcontent;
 char* subtitle;
 char* bserial;
 int* bcode;
 
 student *pstudent=NULL;
    //init_link(&pstudent); //链表初始化 
 ret=bookinfo_init();//初始化book信息
 //clrscr();
 printf("********************MENU*******************\n\n");
 printf("|      0: bookinfo_get_id                  |\n");
 printf("|      1: bookinfo_get_name                |\n");
 printf("|      2: bookinfo_get_count               |\n");
 printf("|      3: bookinfo_get_count               |\n");
 printf("|      4: bookinfo_get_nametype            |\n");
 printf("|      5: bookinfo_get_nametype            |\n");
 printf("|      6: bookinfo_get_descript            |\n");
 printf("|      7: bookinfo_get_country             |\n");
 printf("|      8: bookinfo_get_bookcontent         |\n");
 printf("|      9: bookinfo_get_subtitle            |\n");
 printf("|      10: bookinfo_get_bookcode           |\n");
 printf("|      11: bookinfo_get_bookserial         |\n");
 printf("|      12: foreachArray                    |\n");
 printf("|      13: quit                            |\n\n");
 printf("*******************************************\n");
 while(1)
 {
  //clrscr();
  printf("\n 请输入操作选项:"); /*提示输入选项*/
  scanf("%s",s);
  i=atoi(s); /*将输入的字符串转化为整型数*/ //itoa()整型数转化为字符串
  switch(i)
  {
   case 0:
    ret = bookinfo_get_id(&bookid);
    printf("bookid=%d\n",bookid);
   break;
   case 1:
    ret = bookinfo_get_name(bookname);
    printf("bookname=%s\n",bookname);
   break;
   case 2:
    ret = bookinfo_get_count(&bookcount,0);
    printf("bookcount=%d\n",bookcount);
   break;
   case 3:
    ret = bookinfo_get_count(&bookcount,1);
    printf("bookcount=%d\n",bookcount);
   break;
   case 4:
    ret = bookinfo_get_nametype(bookcatory,STORY);
    printf("tname=%s\n",bookcatory);
   break;
   case 5:
    ret = bookinfo_get_nametype(bookcatory,MISC);
    printf("tname=%s\n",bookcatory);
   break;
   case 6:
    strcpy(bookdes,"方欣上的第一节课就是听张老师讲<<蛋蛋狼的故事>>,她很开心。");
    ret = bookinfo_set_descript(bookdes);//设置 set
    ret = bookinfo_get_descript(bookdes);//获取 get
    sprintf(bookdes,"%s_%d_%d\n",bookdes,22,19);//格式化拼接字符串
    //strcat(bookdes,"_上海"); //拼接字符串
    printf("bookdes=%s\n",bookdes);
   break;
   case 7:
    ret =bookinfo_set_country(OUTER);//设置 set
    ret =bookinfo_get_country(&countryer);//获取 get
    printf("countryer=%d\n",countryer);
   break;
   case 8:
    ret =bookinfo_get_bookcontent(&bcontent);//获取 get
    printf("sectionid=%d\nsectionname=%s\nparagraphname=%s\n",bcontent.sectionid,bcontent.sectionname,bcontent.paragraphname);
   break;
   case 9:
    ret =bookinfo_get_subtitle(subtitle);
    printf("subtitle=%s\n",subtitle);
    free(subtitle);
   break;
   case 10:
    ret =bookinfo_get_bookcode(&bcode);
    printf("bcode=%d\n",*bcode);
   break;
   case 11:
    ret =bookinfo_get_bookserial(&bserial);
    printf("bserial=%s\n",bserial);
   break;
   case 12:
    ret =foreachArray();//打印二维数组
     //printf("bserial=%d%%\n",35);打印出35%
   break;
   case 13:
    pstudent=creat_single_tail_link(pstudent); //尾插法创建单链表 
       print_link(pstudent); //打印单链表
   break;
   case 14:
    pstudent=creat_single_head_link(pstudent);//头插法创建单链表 
       print_link(pstudent); //打印单链表 
   break;
   case 15:
    exit(0);
   break;
   default:
   break;
  }
 }
    return 0;
}
备注:数组名是指针常量。

c实战开发前奏之指针常用参数传递 三板斧头到家相关推荐

  1. 嵌入式开发——结构体指针作为参数传递变量的值不正确

    问题描述 由于海思芯片紧缺,公司决定启用一款新的音视频处理芯片,我负责要将原有的算法库移植到新平台.在移植的过程中,发现调用某个图像转换函数时,得不到正确的结果,而且这个函数还是其他的库里实现的,我只 ...

  2. 《ASP.NET MVC企业实战》(二) MVC开发前奏

    2019独角兽企业重金招聘Python工程师标准>>> ​ 在上一篇"<ASP.NET MVC企业级实战>(一)MVC开发前奏"中记录了作者介绍的一些 ...

  3. Expression Blend实战开发技巧 第四章 从最常用ButtonStyle开始 - PathButton

    本文来自 烤地瓜 的博客,原文地址:http://www.cnblogs.com/kaodigua/archive/2011/02/15/1955472.html [全面解禁!真正的Expressio ...

  4. 分布式系统开发实战:分布式存储,分布式存储常用技术

    分布式存储 互联网每天产生数以亿计的数据,这些数据如何能够被正确地存储.解析.利用,是摆在每个数据公司面前的挑战.传统的关系型数据库,对于处理大规模的数据显得力不从心,由此以NoSQL为代表的分布式存 ...

  5. 分布式系统开发实战:分布式计算,分布式计算常用技术

    分布式计算 分布式计算就是将一个大的计算任务分解成多个小任务,然后分配给多台计算机分别计算,再上传运算结果后统一合并得出数据结论.本章详细介绍分布式计算. 分布式计算概述 在过去的20年里,互联网产生 ...

  6. iOS 实战开发课程笔记

    iOS 实战开发课程笔记 本贴旨在作为对极客班 <iOS 开发实战>第五期期课程视频重新学习的笔记. 目标是建立一个比较完整的 iOS 开发知识点框架以及快速手册. 对各个内容的详细研究会 ...

  7. 使用python和sklearn的中文文本多分类实战开发

    文本分类一般可以分为二分类.多分类.多标签分类三种情况,二分类是指将一组文本分成两个类(0或1),比较常见的应用如垃圾邮件分类.电商网站的用户评价数据的正负面分类等,多分类是指将文本分成若干个类中的某 ...

  8. 视频教程-SpringBoot实战开发视频-Java

    SpringBoot实战开发视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥69.00 立即订阅 扫码下载「CSD ...

  9. c语言 dict数据类型,Python开发基础之Python常用的数据类型

    Python开发基础之Python常用的数据类型 发布时间:2020-08-02 20:07:19 来源:51CTO 阅读:348 作者:warrent 博文大纲 一.Python介绍 二.Pytho ...

最新文章

  1. 图像有损压缩matlab程序,基于Matlab的灰度图像DCT与RLE的混合有损压缩
  2. 《算法导论》读书笔记--第三章 函数的增长
  3. java 包含汉字,【转载】Java判断字符串中是不是包含汉字
  4. 每日一皮:最适合编程写代码的键盘!
  5. Android OpenCV Manager简介
  6. 1:ImageNet Classification with Deep Convolutional Neural Networks
  7. 生成SLUTION MANAGER KEY 的ABAP程序
  8. 吐血总结:AQS到底是什么?
  9. 细胞冻存及细胞计数的技巧
  10. 2012二级java真题_2012年计算机二级JAVA模拟试题及答案详解汇总
  11. bzoj1783: [Usaco2010 Jan]Taking Turns
  12. 盒模型知识点汇总(附实例、图解)
  13. 计算机的桌面助手,正规的电脑桌面一键整理助手
  14. TOPSIS法 —— matlab
  15. 拉钩网爬取所有python职位信息
  16. oracle ohs是什么,oracle ohs修改https端口
  17. 基于Qt的网络五子棋游戏对战
  18. mysql主键有Duplicate entry
  19. 搭建网站,需要几种服务器?
  20. 51cto的请看过来

热门文章

  1. 虚拟机的破解root密码
  2. java设置word审阅最终状态_如何设置word2013为最终状态
  3. JS获取元素的大小(高度和宽度)
  4. 解决Address localhost:1099 is already in use
  5. Vitis项目:基于 ZYNQ 的 IMX2221 摄像头实时视频流采集传输 (一)传感器配置
  6. 2019年8月杭州出发飞重庆游成都的四日自助行攻略
  7. 10个SecureCRT 小窍门 - 你玩转几个?
  8. 我的steam账号被盗取了,差点让他得逞
  9. 前端代码实现摇一摇功能,全网详解
  10. $GOPATH not set