易截截图软件、单文件、免安装、纯绿色、仅160KB

(转)一个简单的带头尾指针单向链表(C实现)

用C写了一个带头尾指针的单向链表,仅在尾部进行插入操作,在任意位置进行删除操作。因为只用到这么些功能,又因为懒,所以没有扩展。因为插入是固定在尾部进行,带一个尾指针的好处是显而易见的。当然删除时要付出一些开销。
  list.h
  -------------------------------------------
  /* list.h
  ** Copyright 2004 Coon Xu.
  ** Author: Coon Xu
  ** Date: 06 Sep 2004
  */
  #ifndef LIST_H
  #define LIST_H
  #include <stdio.h>
  #include <stdlib.h>
  struct listnode
  {
   struct listnode* next;
   int data;
  };
  struct list
  {
   struct listnode* head;
   struct listnode* tail;
   int count;
  };
  void list_init(struct list*);
  void list_insert(struct list*, struct listnode*);
  int list_delete(struct list*, struct listnode*);
  #endif
  ------------------------------------------
  list.c
  ------------------------------------------
  /* list.c
  ** Copyright 2004 Coon Xu.
  ** Author: Coon Xu
  ** Date: 06 Sep 2004
  */
  #include "list.h"
  void list_init(struct list* myroot)
  {
   myroot->count = 0;
   myroot->head = NULL;
   myroot->tail = NULL;
  }
  void list_insert(struct list* myroot, struct listnode* mylistnode)
  {
   myroot->count++;
  
   mylistnode->next = NULL;
   if(myroot->head == NULL)
   {
   myroot->head = mylistnode;
   myroot->tail = mylistnode;
   }
   else
   {
   myroot->tail->next = mylistnode;
   myroot->tail = mylistnode;
   }
  }
  int list_delete(struct list* myroot, struct listnode* mylistnode)
  {
   struct listnode* p_listnode = myroot->head;
   struct listnode* pre_listnode;
  
   //myroot is empty
   if(p_listnode == NULL)
   {
   return 0;
   }
  
   if(p_listnode =


相关文档:

c和c++的微妙的不同

在c++中存在,在c语言中却不存在的限制有:
1. 完整的函数原型声明是必须的,c语言里没这么严格.
2. c++中,由typedef定义的名字不能与已有的结构标签冲突,但是c语言中却是可以的.
3. 当void*指针赋值给另一个类型的指针时,c++规定必须进行强制类型转换,但是c语言中却不必要。
在c++和c中含义不一样的特性:
1. c++ ......

LINUX C 链表封装


main.c
//初始化队列
void InitQueue(LiQueue *q)
{
  q=(LiQueue*)malloc(sizeof(LiQueue));
    q->front=q->rear=NULL;
}
//判断是否为空
int QueueEmpty(LiQueue *q)
{
 if(q->rear==NULL)
 {
  return 1;
 }
 else
 {
  ......

标准C的头文件assert.h学习总结

1:类似junit的断言,只是在assert中的断言,如果不满足的话就程序退出。
比如
#include <assert.h>

int main(void)
{
assert(6 < 5);
system("pause");
return 0;
}
在执行到assert(6 < 5);
的时候因为不满足断言,于是程序退出。
如果不想让assert(6 < 5)起作用,就在最上面添加宏定义# ......

C/C++底层实现指定磁盘只读

  C/C++底层实现指定磁盘只读 收藏
燕狂徒写的驱动挂钩,限制磁盘只读, 用于保证涉密计算机的稳定,相当于将磁盘变成ROM #include "ntddk.h"
#include
#include #define DRIVERNAME "OnlyRead(GongXiPeng!)"     // for use in messages typedef struct tagDEVICE_EXTEN ......

SQLite3的C编程

/*=================================
.*  The Standard include file.
.*
.*===============================*/
#include <stdio.h>
#include <stdlib.h>
/*=================================
.*
.*  The extend include file.
.*
.*===============================*/
#include "sqlit ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号