使用临时变量删除链表

不使用临时变量删除链表、使用临时变量删除链表

typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;

typedef int ElementType;

struct Node
{
   ElementType Element;
   Position Next;
};

//不使用临时变量删除链表
void DeleteList( List L )
{
    Position P;
    P = L->Next;
    L->Next = NULL;
    while( P != NULL )
    {
        free( P );
        P = P->Next;
    }
}
//使用临时变量删除链表
void DeleteList( List L )
{
   Position P, Tmp;
   P = L->Next;
   L->Next = NULL;
   while( P != NULL )
  {
       Tmp = P->Next;
       free( P );
       P = Tmp;
  }
}

暂时还不太明白两者的区别。

时间: 2024-10-13 11:33:37

使用临时变量删除链表的相关文章

5.4.1 中间代码生成与优化_UCC编译器的优化_删除无用的临时变量和优化跳转目标

5.4.1  删除无用的临时变量和优化跳转目标 UCC编译器在优化方面做的工作不多,其中与优化有关的函数主要有以下几个: (1)    Symbol  Simplify(Type ty, int opcode, Symbol src1,Symbol src2); 用于进行"代数恒等式"的简化,例如表达式"a<<0"可简化为a. (2)    Symbol  TryAddValue(Type ty, int op, Symbol src1,Symbol s

链表《4》删除链表中的结点

下图是一个创建好的链表 下面我们需要删除一个结点,例如删除第3个结点 首先定义一个指针p,并且将p指向第二个结点 然后定义一个指针q,将q指向需要删除的结点 将p指向的结点和q指向的结点相连 p->pNext = q->pNext 清空q指向的结点 free(q); q = NULL; 删除后的链表 程序代码: #include <stdio.h> #include <stdlib.h> typedef struct Node//结点结构 { int data;//数据

重构改善既有代码设计--重构手法02:Inline Method (内联函数)&amp; 03: Inline Temp(内联临时变量)

Inline Method (内联函数) 一个函数调用的本体与名称同样清楚易懂.在函数调用点插入函数体,然后移除该函数. int GetRating() { return MoreThanfiveLateDeliverise() ? 2 : 1; } bool MoreThanfiveLateDeliverise() { return _numberOfLateLiveries > 5; } int GetRating() { return _numberOfLateLiveries > 5

第2章 重新组织函数(2):内联函数和内联临时变量

2. 内联函数(Inline Method) 2.1 动机 (1)在函数调用点插入函数本体,然后移除该函数. (2)有时遇到某些函数,其内部代码和函数名称同样清晰易读,采用内联函数可以提供代码的执行速度(因为少掉了函数调用的开销) (3)在Replace Method withd Method Object之前,将一些组织不合理的函数内联到一个大型函数,再从中提炼组织合理的小型函数时效果很好. (4)使用太多的间接层时,特别是一部分函数只是对另一个函数的简单委托时,可同去掉一些无用的间接层. 2

重构笔记——内联临时变量

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42167015         在上一篇文章中介绍了" 内联函数".本文将介绍"内联临时变量"这种重构手法.         下面让我们一起来学习该重构手法把.(PS:虽然某些重构手法看起很简单,但是和其它重构手法结合起来使用,会产生异曲同工的效果) 开门见山         发现:你有一个临时变量,只被一个简单表达式赋

[算法]删除链表的中间节点

题目一: 给定链表的头结点,实现删除链表中间节点的函数. 思路: 基本解法: 先遍历一遍链表,计算出链表节点的个数.然后计算出中间节点的位置,再次遍历链表,找到中间节点的前一个位置,进行删除操作. 但是也可以只遍历一次就完成上述操作: 链表的长度 中间节点 的位置 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 - - 可以看出,链表的长度每增加两个节点,中间节点的位置就向右移动一位.所以我们可以设置两个变量pre和cur,cur表示当前遍历的位置,pre表示从头结点到cur这段

C++ const引用、临时变量 引用参数

C++引用-临时变量.引用参数和const引用 如果实参与引用参数不匹配,C++将生成临时变量.如果引用参数是const,则编译器在下面两种情况下生成临时变量: 实参类型是正确的,但不是左值 实参类型不正确,但可以转换为正确的类型 左值参数是可被引用的数据对象,例如,变量.数组元素.结构成员.引用和被解除引用的指针都是左值,非左值包括字面常量和包含多项式的表达式.定义一个函数 Double refcube(const double& ra) { Returnra*ra*ra; } double

学号20175313 《程序设计中临时变量的使用》第八周

目录 程序设计中临时变量的使用 一.题目要求 二.运行结果截图 三.遇到的问题及其解决方法 四.代码链接 五.心得体会 程序设计中临时变量的使用 一.题目要求 //定义一个数组,比如 int arr[] = {1,2,3,4,5,6,7,8}; //打印原始数组的值 for(int i:arr){ System.out.print(i + " "); } System.out.println(); // 添加代码删除上面数组中的5 ... //打印出 1 2 3 4 6 7 8 0 f

20175314薛勐 程序设计中临时变量的使用(课下测试,选做)

程序设计中临时变量的使用(课下测试,选做) 要求 定义一个数组:int arr[] = {1,2,3,4,5,6,7,8}; 打印原始数组的值:for(int i:arr){System.out.print(i + " "); } System.out.println();// 添加代码删除上面数组中的5 ... 打印出 1 2 3 4 6 7 8 0:for(int i:arr){System.out.print(i + " ");} System.out.pri