指引网

当前位置: 主页 > 编程开发 > C >

全局与局部变量与链表关系的思考

来源:网络 作者:佚名 点击: 时间:2017-07-19 23:01
[摘要] 

  变量按作用域可分为全局变量与局部变量,谭浩强老师的书上建议说“不在必要时不要使用全局变量”,所以我就这么想过如果我能在编程的过程中找到一种算法把原本要用全局变量的程序用局部变量也能使它有效的运行,这样我所作的工作是否真的有用,有效呢??我很迷惑,因为我在学习数据结构的过程做了一些小实验,同时也遇到了一些因难。(我所用的教材是《算法与数据结构》C语言版)
    我所到的问题是有关链表与基于链表的一些常用数据结构的基本功能的一些算法。比如我所用的教材上所写顺序表的删除,插入算法(它们是用类C描述的函数),它们所返回值是void类型,由于函数的调用机制,我们只能在主函数处定义全局顺序表,这样才能调用那些void类型的函数。但我却作了这样和改动,把void类型改成自定义的链表类型,这样我能就局部的,也就是能在主函数定义局部自定义链表变量,并且也能成功的调用所改动后的函数去实现链表的一些基本操作功能:如下是个人改动后的一个例子:(本人所用的是VC6.0)
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE   500
typedef int ElemType;//数据元素
typedef struct//顺序链表结构
{
 ElemType data[MAXSIZE];//
 int      leght;//
}MyList;//我的链表
MyList InitList()//顺序表的初始化//这里就是改动的
{
 MyList  L;
 L.leght=0;
 return  L;
}
int    ListLeght(MyList L)       //求链表长
{
 return  L.leght;
}
ElemType  GetElem(MyList L,int i)//求链表的元素
{
 return  L.data[i-1];
}
ElemType LocateElem(MyList L,ElemType x)//按值查找链表元素
{
 int i;
 while(i<=L.leght&&L.data[i-1]!=x)
  i++;
 if(i<=L.leght)
  return i;
 else
  return 0;
}

------分隔线----------------------------