新闻中心

EEPW首页 > 嵌入式系统 > 牛人业话 > 写好C语言程序的“三板斧”

写好C语言程序的“三板斧”

作者:Machinnneee时间:2015-11-09来源:电子产品世界收藏

  a、 保存初始的“猴子”圆圈参数。

本文引用地址:http://www.eepw.com.cn/article/282515.htm

  /* 保存节点总数 */

  total = n;

  printf("nthe out num:");

  q = head;

  为什么要保留这个呢?首先要控制猴子数目,所以保留了全部的数目。其次用q(qurry)来保留剔除猴子前面的链表,并连接剔除猴子后的链表。这样,完成了循环链表的元素删除。

  b、 猴子查数。

  猴子查数是整个程序的关键,需要完成以下任务:a、找到开始的“猴子”数;b、删除该“猴子”;c、将删除掉的循环链表首尾连接起来。

  /* 只剩一个节点时停止循环 */

  while (total != 1)

  {

  /* 报数过程,p指向要删除的节点 */

  for (i = 1; i < m; i++)

  {

  p = p->next;

  }

  /* 打印要删除的节点序号 */

  printf("[%d] ", p->data);

  /* q 指向 p 节点的前驱 */

  while (q->next != p)

  {

  q = q->next;

  }

  /* 删除 p 节点 */

  q->next = p->next;

  /* 保存被删除节点指针 */

  s = p;

  /* p 指向被删除节点的后继 */

  p = p->next;

  /* 释放被删除的节点 */

  free(s);

  /* 节点个数减一 */

  total--;

  }

  /* 打印最后剩下的节点序号 */

  printf("nnthe last num:[%d] nn", p->data);

  free(p);

  }

  通过以上数据运算,可以完成相应链表元素的删除,这或许就是程序的魅力所在。

  第三把斧,使用的指针。

  比如本程序的链表指针的定义,p,s,q。

  linklist *head, *p, *s, *q;

  我们知道,指针操作不但可以减少数据操作需要的内存,还可以提高程序的运行速度,这在另一方面达到了我们的“第三把斧”的目的。

  指针的优势,或许在本程序中表现的不明显,在大量数据和对操作速度要求比较敏感的情况下会很明显,比如linux内核中,就会有很好的体现。

  总之,对于嵌入式工程师,不但能设计出好的硬件电路,如果也能写出好的软件程序就会让我们的生活更加美好。工程师们,耍起这“的三把斧”!


上一页 1 2 下一页

关键词: C语言

评论


相关推荐

技术专区

关闭