C语言面试题分类-链表

news/2024/6/29 11:38:29

链表的创建,清空,插入,删除

typedef int (* __compfunc)(const void *, const void *);

//Traverse list. Fast macro to traverse the list.
#define linklist_next(al) \
      ((al) && ((al)=(al)->next) ? (al)->data : NULL)

typedef struct linklist
{
  void *  data;
  struct linklist *  next;
} linklist_t;

//
Allocate a new list data structure linklist_t * linklist_create() { linklist_t *ll; ll = (linklist_t *) calloc(1, sizeof(linklist_t)); return ll; } //Destroy the list ll. void linklist_destroy(linklist_t *ll) { if (ll) { linklist_t *current = NULL; while ((current=ll)) {ll = ll->next; free(current);} } } //Insert an element at the tail of a list. int linklist_add(linklist_t *ll, void *data) { if (ll) { linklist_t *node = NULL; if ((node=(linklist_t *)calloc(1, sizeof(linklist_t))) == 0) return -1; while (ll->next) ll = ll->next; node->data = data; node->next = ll->next; ll->next = node; return 0; } return -1; } //Remove element from the list. int linklist_remove(linklist_t *ll, void *data) { if (ll) { linklist_t *prev = NULL; while (ll->next) { prev = ll; ll = ll->next; if (ll->data == data) { prev->next = ll->next; free(ll); return 0;/* Success */ } }//while } return 1; /* object not found or NULL list */ } // Do an insertion sort algorithm on the list. An empty list is already // sorted and so is a single element list. int linklist_insert(linklist_t *ll, void *data, __compfunc cbcomp) { if (ll) { linklist_t *node=NULL, *prev=NULL; if (!cbcomp) return linklist_add(ll, data); if ((node=(linklist_t *)calloc(1, sizeof(linklist_t))) == 0) return -1; node->data = data; if (!ll->next) { ll->next = node; return 0; } for (prev=ll,ll=ll->next; ll; prev=ll,ll=ll->next) { if (cbcomp(data, ll->data) <= 0) { prev->next = node; node->next = ll; return 0; } } prev->next = node; } return 0; }


4.链表的逆序
  1. LinkNode* ReverseLink(LinkNode* head)  
  2. {  
  3.     LinkNode *prev=NULL, *next=NULL;  
  4.     while(head)  
  5.     {  
  6.         next = head->next;  
  7.         head->next = prev;  
  8.         prev = head;  
  9.         head = next;  
  10.     }  
  11.   
  12.     return prev;  
  13. }  

 

 

 

转载于:https://www.cnblogs.com/mcy0808/p/8883072.html


http://www.niftyadmin.cn/n/3617376.html

相关文章

舞蹈链(DLX)学习笔记

简介 用途&#xff1a;解决精确/重复覆盖问题&#xff08;某一列含有恰好1个1&#xff09;&#xff0c;全称Dancing Links X&#xff0c;X是未知搜索算法的意思。 洛谷模板题 超详细的算法图解 实际上并不难&#xff0c;就是 暴搜 十字链表维护。 把所有的1拿出来建十字链…

qwb与整数对 (思维枚举难)

Problem L: qwb与整数对 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 214 Solved: 34 [Submit][Status][Web Board] Description qwb又遇到了一道数学难题&#xff0c;你能帮助他吗&#xff1f; 给出两个整数n和m&#xff0c;请统计满足0&#xff1c;a&#xff1c;…

[读书笔记]《Android开发艺术探索》第十五章笔记

Android性能优化 Android不可能无限制的使用内存和CPU资源&#xff0c;过多的使用内存会导致内存溢出&#xff0c;即OOM。而过多的使用CPU资源&#xff0c;通常是指做大量的耗时任务&#xff0c;会导致手机变的卡顿甚至出现程序无法响应的情况&#xff0c;即ANR。15.1.1布局优化…

HDU5462 Manors【半平面交】

题目描述&#xff1a; HDU5462 Manors nnn个人&#xff0c;每个人mmm个旗子坐标为 xi,j,yi,jx_{i,j},y_{i,j}xi,j​,yi,j​&#xff0c;fi(x,y)∑j1m(x−xi,j)2(y−yi,j)2f_i(x,y)\sum_{j1}^m(x-x_{i,j})^2(y-y_{i,j})^2fi​(x,y)∑j1m​(x−xi,j​)2(y−yi,j​)2 点(x,y)(x,…

HDU 2036 改革春风吹满地[多边形的面积]

改革春风吹满地 时限&#xff1a;1000ms Problem Description“ 改革春风吹满地,不会AC没关系;实在不行回老家&#xff0c;还有一亩三分地。谢谢!&#xff08;乐队奏乐&#xff09;”话说部分学生心态极好&#xff0c;每天就知道游戏&#xff0c;这次考试如此简单的题目&#x…

codeforces 814B An express train to reveries

B. An express train to reveries time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Sengoku still remembers the mysterious “colourful meteoroids” she discovered with Lala-chan when they were littl…

PLSQL_游标详解及游标过程

/************************************** 003 PL/SQL 游标 *****************************************/ /** 游标&#xff1a;三类&#xff1a;1隐性游标(SQL%FOUND.缺省写法存在、可以捕捉到、很少用) 2显式游标 3参照(REF)游标 操作步骤: 声明游标 -> 打开游标 -> …

LOJ#6511. 「雅礼集训 2018 Day8」B【线性规划对偶问题,费用流】

题目描述&#xff1a; 题目分析&#xff1a; 求最大费用可行流即可。路径的长度指路径上的tit_iti​之和。 对偶理论&#xff1a; 变量非负&#xff0c;约束不等式同号&#xff0c;下面这张图截自百度百科对偶理论 LOJ上有不二分的做法&#xff0c;8是太懂。。虽然上面这个做…