什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列。链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础

链表比起数组来,更易于插入,删除。

Node可以定义如下:

typedef int element_type;
typedef struct node *node_ptr; struct node {
element_type element;
node_ptr next;
};
 

另外关于要不要头节点这个问题,我建议加上头节点,理由如下:

1. 没有头节点,删除第一个节点后,不小心就丢失了List
2. 插入头部时,没有个直观的方法。
3. 通常的删除操作,都要先找到前一个节点,如果没有头节点,删除第一个节点就不一样了。

接下来重点实现单链表的反转,这也是常常考到的一个问题,下面是C语言实现:

void list_reverse(LIST L)
{
if (L->next == NULL) return;
node_ptr p = L->next, first = L->next;
while (p != NULL && p->next != NULL) {
node_ptr next_node = p->next;
p->next = next_node->next;
next_node->next = first;
first = next_node;
}
L->next = first;
}

--

最新文章

  1. [APUE]不用fcntl实现dup2函数功能
  2. 关于strlen误用的一点记录
  3. Windows Internals学习笔记(六)Windows关键系统组件
  4. 反向Ajax,实现服务器向客户端推送消息
  5. [ActionScript 3.0] AS3.0 烟雾粒子效果
  6. tune 06 Database Configuration and I/O Issues
  7. HTML5新增结构标签
  8. Django request 常用属性
  9. spring mvc标准项目结构
  10. 教你正确地利用Netty建立连接池
  11. Http 请求头中的 Proxy-Connection
  12. linux-sfdisk 使用方法
  13. ThinkPHP3.2 常量参考
  14. linux 压缩与解压
  15. Spring+Spring MVC+MyBatis框架集成
  16. C#的XML文件的读取与写入
  17. scp的简单记忆方法
  18. go web framework gin 路由表的设计
  19. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误
  20. SqlServer中查看索引的使用情况

热门文章

  1. django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能
  2. SPOJ 4060 A game with probability
  3. BZOJ4723: [POI2017]Flappy Bird
  4. css样式---隐藏元素
  5. php生成压缩包
  6. Virtualization基础
  7. Yii 之视图布局
  8. golang-random随机数
  9. koa2 从入门到进阶之路 (一)
  10. 单片机C51串口发送、接收寄存器