#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
typedefintDataType;
typedefstructSListNode
{
DataTypedata;
structSListNode*next;
}SListNode;
SListNode*BuyNode(DataTypex)
{
SListNode*next=(SListNode*)malloc(sizeof(SListNode));
ne..
分类:
编程语言 时间:
2016-01-13 00:49:57
阅读次数:
203
【203-Remove Linked List Elements(删除单链表中的元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Chao】原题 Remove all elements from a linked list of integers that have value val.
Exampl...
分类:
编程语言 时间:
2015-08-26 08:17:43
阅读次数:
309
单链表删除某一位置节点的程序十分容易,但也容易出错。网上流传的一些程序并不正确。
这一程序的关键点在于:删除某一位置节点,那么需首先确定其前驱结点。前驱节点存在一些特例情况:当前节点为空、当前非空但后继为空(尾节点)。
同时,还要进行断言以及待删节点为首节点的相关处理。完整程序如下:
#include "stdafx.h"
#include
#include
typedef struc...
分类:
其他好文 时间:
2015-08-13 14:27:49
阅读次数:
185
单链表删除节点
node *del(node *head, int num)
{
node *p1, *p2;
p1 = head;
while (num != p1->data && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if (num == p1->data)
{
if (p1 == head)
hea...
分类:
其他好文 时间:
2015-07-31 21:54:30
阅读次数:
452
1. 问题描述 给定一个单链表,删除其中值为k的所有节点。例如:1→2→6→3→4→5→61 \to 2 \to 6 \to 3 \to 4 \to 5 \to 6,删除其中值为6的节点,返回:1→2→3→4→51 \to 2 \to 3 \to 4 \to 5 。2. 方法与思路 这是一个简单的链表操作题。删除是要考虑的节点所在的位置(头部,中间和尾部),分开处理一下好了。主要过程如下描述:...
分类:
其他好文 时间:
2015-07-24 12:53:55
阅读次数:
98
1. 问题描述 给定一个单链表,删除它的倒数第k个节点。例如给定链表: 1→2→3→4→51\to 2 \to 3\to 4 \to 5,删除它的倒数第二个节点后变为 1→2→3→51\to 2 \to 3\to 5。可以假设倒数第k个节点总是存在。2. 方法与思路 很容易想到第一种方法,就是先对单链表进行进行一次遍历,求出其长度n。然后再进行第二次遍历,设一个指针,向后移动n?kn-k个位置,...
分类:
其他好文 时间:
2015-07-20 16:20:51
阅读次数:
173
一:LinkList Delete_Min(LinkList &L){ //L是带头结点的单链表,本算法删除其最小值结点 LNode *pre = L, *p=pre->next; //p 为工作指针,pre 指向其前驱 LNode *minpre=pre, *minp=p; //保存最小值结点及其...
分类:
编程语言 时间:
2015-06-30 01:15:34
阅读次数:
375
一、 题目
给定一个单链表,删除倒数第n个节点,返回删除了的链表。
例如: 已知: 1->2->3->4->5, n = 2.
处理后:1->2->3->5.
试着遍历一次完成。
二、 分析
看到这道题我第一感觉就是双指针,因为要删除倒数第n个数,所以两个指针的间距也就是这个n,当右边的指针到达末尾处时,那么左指针的下一个指针就是要删除的节点。其实会有下面...
分类:
其他好文 时间:
2015-01-14 09:51:12
阅读次数:
155
题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。
解题思路:
如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。
现在要求时间复杂度为O(1),因为p不是最后一个结点,知道结点p我们可以删除p的后继结点,那么我们可以把p的后继结点元素的值赋给p结点元素的值。
ADT定义如下
#define ElemType int...
分类:
其他好文 时间:
2015-01-13 17:47:09
阅读次数:
181
题目:删除带头结点的单链表中重复值的元素(即让每种值的元素只有一个)
解题思路:
用一个动态辅助存储数组,每次要向辅助数组中放入元素时,让辅助数组的长度加1,最长时与单链表一样长,设一个指针p,让它指向头结点,从单链表中第一个元素开始,将它的值放入辅助数组中,然后依次访问单链表后面的元素,用该元素的值与数组中所有已经被赋值的元素的值进行比较,如果不等于数组中任何元素的值,那么让p的ne...
分类:
其他好文 时间:
2015-01-13 12:38:01
阅读次数:
179