C实现单链表
typedef int DataType;
typedef struct ListNode
{
DataType data;
struct ListNode* next;
}ListNode; //初始化链表
void InitList(ListNode** pphead)
{
*pphead = NULL;
} //创建节点
ListNode* BuyNode(DataType x)
{
ListNode* tmp = (ListNode*)malloc(sizeof(ListNode));
assert(tmp);
tmp->data = x;
tmp->next = NULL;
return tmp;
} //尾插
void PushBack(ListNode** phead,DataType x)
{
if(NULL == *phead)
{
*phead = BuyNode(x);
}
else
{
ListNode* tial = *phead;
while(tial->next != NULL)
{
tial = tial->next;
}
tial->next = BuyNode(x);
}
} //打印
void Print(ListNode* phead)
{
ListNode* tmp = phead;
while(tmp != NULL)
{
printf("%d->",tmp->data);
tmp = tmp->next;
}
printf("NULL");
printf("\n");
} //前插
void PushFront(ListNode** phead,DataType x)
{
if(*phead == NULL)
{
*phead = BuyNode(x);
}
else
{
ListNode* tmp = BuyNode(x);
tmp ->next = *phead;
*phead = tmp;
}
} //尾删
void PopBack(ListNode** phead)
{
if(*phead == NULL)
{
printf("kd");
return;
}
else
{
ListNode* tmp = *phead;
(*phead) = (*phead)->next;
free(tmp);
}
} //找节点
ListNode* Find(ListNode* phead,DataType x)
{
if(NULL == phead)
{
printf("KONG");
return;
}
else
{
ListNode* cur = phead;
while(cur)
{
if(cur->data = x)
{
return cur;
}
cur = cur->next;
}
return cur;
}
} //插入
void Insert(ListNode* pos,DataType x)
{
ListNode* tmp = BuyNode(x);
tmp->next = pos->next;
pos->next = tmp;
} //翻转单链表
ListNode* Reverse(ListNode* phead)
{
ListNode* newhead = NULL;
ListNode* tmp = phead;
while(tmp)
{
ListNode* cur = tmp;
tmp = tmp->next;
cur->next = newhead;
newhead = cur;
/*ListNode* cur = tmp->next;
tmp->next = newhead;
newhead = tmp;
tmp = tmp->next;*/
}
return newhead;
} //从尾到头打印单链表
void printListFromTailToHead(ListNode* head)
{
if(head == NULL)
{
return;
}
ListNode *newhead = NULL;
ListNode *cur = head;
while(cur)
{
ListNode *tmp = cur;
cur = cur->next;
tmp->next = newhead;
newhead = tmp;
}
ListNode *p = newhead;
while(p)
{
cout<<p->val<<endl;
p = p->next;
}
}
C实现单链表的更多相关文章
- 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法
有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...
- 单链表的C++实现(采用模板类)
采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作. 链表结构定义 定义单链表 ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- [LeetCode] Linked List Cycle II 单链表中的环之二
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- c++单链表基本功能
head_LinkNode.h /*单链表类的头文件*/#include<assert.h>#include"compare.h"typedef int status; ...
- 单链表、循环链表的JS实现
数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑...... 当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...
- C代码实现非循环单链表
C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...
- 分离的思想结合单链表实现级联组件:CascadeView
本文介绍自己最近做省市级联的类似的级联功能的实现思路,为了尽可能地做到职责分离跟表现与行为分离,这个功能拆分成了2个组件并用到了单链表来实现关键的级联逻辑,下一段有演示效果的gif图.虽然这是个很常见 ...
- 数据结构:单链表结构字符串(python版)添加了三个新功能
#!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...
- 数据结构:单链表结构字符串(python版)改进
此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...
随机推荐
- 用Python来找合适的妹子
时间真的有点仓促,匆匆忙忙撸完这篇文章. 虽然今天是情人节,但还是要关心一下单身狗们,帮助他们俩脱单. 古人云:知己知彼,百战不殆. 好好去了解一下妹子们的内心想法,早日脱单! 这次我在一个某知名婚 ...
- 【CF17E】Palisection(回文树)
[CF17E]Palisection(回文树) 题面 洛谷 题解 题意: 求有重叠部分的回文子串对的数量 所谓正难则反 求出所有不重叠的即可 求出以一个位置结束的回文串的数量 和以一个位置为开始的回文 ...
- 迭代器Iteration
定义: 可以被next()调用并不断返回下一个值的对象成为迭代器Iterator 与可迭代(Iterable)的区别: Iterable定义为:凡是作用于for循环的对象.比如list(),dict{ ...
- oracle 裸设备划分 --centos6.5
主题思想:物理卷PV->卷组VG->逻辑卷LV(类型:raw)->添加表空间 操作过程 vg_orcl 8g 一:划分 二:创建裸设备 方法1:目前最常用的方法 #c ...
- c# 多线程同步之Mutex
说起Mutex,它的中文名字叫互斥体.它是WaitHandle家族成员之一,前面有一篇介绍过WaitHandle的家族成员构成.那么Mutex有什么作用呢?它是怎么使用的? 我们先来看看它的使用场景一 ...
- react实战第一步--搭建项目
使用 create-react-app 快速构建 React 开发环境 1.cnpm install -g create-react-app 2.create-react-app react2(rea ...
- 分布式日志收集系统:Flume
Flume知识点: Event 是一行一行的数据 1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去. 2.flume里面有个核心概念,叫做agent.agent是一个java进程,运 ...
- Lintcode360 Sliding Window Median solution 题解
[题目描述] Given an array of n integer, and a moving window(size k), move the window at each iteration f ...
- 为什么需要RPC,而不是简单的HTTP接口
转载自:http://www.oschina.net/question/271044_2155059?sort=default&p=1#answers 目前有很多Java的RPC框架,有基于J ...
- ES6之promise的使用
let checkLogin = function () { return new Promise(function (resolve,reject) { let flag = document.co ...