发新帖我要提问
12
返回列表
打印
[C语言]

C 语言实例 呕心沥血之作 快速提升C能力

[复制链接]
楼主: 一路向北lm
手机看帖
扫描二维码
随时随地手机跟帖
21
一路向北lm|  楼主 | 2018-10-16 23:09 | 只看该作者 回帖奖励 |倒序浏览
smartpower 发表于 2018-10-15 09:02
在MCU一般不太用到这么高深的技术。用得最多的就一个FOR。

没这么简单吧

使用特权

评论回复
22
Vansm| | 2018-10-17 10:05 | 只看该作者
一路向北lm 发表于 2018-10-16 23:08
唉,自己一天练习点,很有用吧

其实现在看来  还是点多做项目   进步最快

使用特权

评论回复
23
一路向北lm|  楼主 | 2018-10-18 13:22 | 只看该作者
Vansm 发表于 2018-10-17 10:05
其实现在看来  还是点多做项目   进步最快

是的,项目提高的快。

使用特权

评论回复
24
一路向北lm|  楼主 | 2018-10-18 20:21 | 只看该作者
更新了,关于单链表的一些总结:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<assert.h>


#define  FALSE    0
#define  TRUE     1

// 单链表声明
typedef struct NODE
{
   struct  NODE  *link;
   int     value;
}Node;

// 插入函数 效率不错
int sll_insert(register Node **linkp , int new_value)
{
  register Node *current;
  register Node * news;

        /*寻找正确的插入位置,方法是按顺序访问链表,直到到达值大于或等于新插入值的节点*/
        while((current = *linkp) != NULL && current->value < new_value)
        {
          linkp = ¤t->link;
        }

        /* 为新节点分配内存,并把新值存入到新节点中,如果内存分配失败,函数返回FALSE*/
        news = (Node *) malloc(sizeof(Node));
        if(news == NULL)
           return FALSE;
        news->value =new_value;
        /* 把新节点插入到链表中,并返回TRUE*/
        news->link =current;
        *linkp = news;
        return TRUE;
}

// 在链表中寻找特定的值,返回链表节点指针
Node * sll_find(Node *first,int desired_value)
{
        for(;first!=NULL;first=first->link)
                if(first->value == desired_value)
                  return first;               
        return NULL;       
}
//打印链表数据
void printSll(Node *root)
{
  while(root!=NULL)
  {
          printf("%d\n",root->value);
          root = root->link;
  }
}

//输出链表节点个数
int sll_count(Node *first)
{
        int count=0;
        for(;first!=NULL;first=first->link)
                 count++;
        return count;                               
}
// 反序排列一个单链表所有节点,返回指向单链表的新头节点指针
Node * sll_reverse(Node *current)
{
     Node *previous;
         Node *next;

         for(previous = NULL;current != NULL; current =next)
         {
                 next = current->link;
                 current->link = previous;
                 previous = current;
         }
         return previous;
}

// 功能:单链表中删除指定节点。
// 参数:第一个参数指向链表的根指针,第二个参数指向需要被删除的节点。
// 返回:成功返回TRUE,否则FALSE。
int sll_remove(Node **linkp,Node *del)
{
        register Node *current;
        assert(del!=NULL);

        // 寻求要删除的节点
        while((current = *linkp) != NULL && current != del)
            linkp = ¤t->link;
        if(current == del)
        {
                *linkp = current->link;
                free(current);
                return TRUE;
        }
        else
                return FALSE;
}


使用特权

评论回复
25
yangzhi1023| | 2018-10-25 14:58 | 只看该作者
楼主,能尽快总结打包吗??等待中。。。

使用特权

评论回复
26
一路向北lm|  楼主 | 2018-10-26 21:18 | 只看该作者
yangzhi1023 发表于 2018-10-25 14:58
楼主,能尽快总结打包吗??等待中。。。

写完了一起打包吧,这点太少了

使用特权

评论回复
27
一路向北lm|  楼主 | 2018-10-26 21:18 | 只看该作者
可以吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则