用户操作
[即时聊天] [发私信] [加为好友]
silencezhujianhua
最近评论
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 链表的定义收藏

      新一篇: 链表作用 | 旧一篇: c&c++

      //若干信号量定义
      #define TRUE           1
      #define FALSE          0
      #define OK             1
      #define ERROR          0
      #define OVERFLOW       'o'
      #define OUTB           -2  //越界错误

      //状态返回值类型定义
      typedef int Status;

      //链表存储元素类型
      typedef struct{
       int Element;
      }ElemType;
      //链表节点类型定义
      typedef struct LNode{
          ElemType data;
       struct   LNode  *next;
      }*Link, *Position;
      //链表定义(实质上仅有链表头)
      typedef struct{
       Link head,tail;
       int len;
      }LinkList;

      //分配一个p指向的值为e的节点,并返回OK;如果分配失败,则error
      Status MakeNode( Link &p, ElemType e);

      //释放p指向的节点
      void FreeNode( Link &p);


      //初始化一个已经声明链表L
      Status InitList( LinkList &L);

      //销毁一个链表L
      Status DestroyList( LinkList &L);

      //将当前链表L清空,变成一个初始状态的链表
      Status ClearList( LinkList &L);

      //在头节点位置插入一个新的节点,h指向头,s指向新的节点
      Status InsFirst( Link h, Link s);

      //将头节点删除
      Status DelFirst( Link h, Link &q);

      //向链表内插入数据,s以后的一个或若干个节点插入链表的尾部
      //并修改链表的tail指针
      Status Append( LinkList &L, Link s);

      //删除链表尾节点元素,由q返回
      Status Remove( LinkList &L, Link &q);

      //将元素插入由p指定的位置的前一个位置,并修改p指向新的节点
      Status InsBefore( LinkList &L, Link &p, Link s);

      //将元素插入由p指定位置的下一个位置,并修改p指向新节点
      Status InsAfter( LinkList &L, Link &p, Link s);

      //修改当前指针p指向的元素的数据域的值为e
      Status SetCurElm( Link &p, ElemType e);

      //获取当前指针p指向的元素的数据域的值,以e返回
      Status GetCurElm( Link &p, ElemType &e);

      //判断当前链表是否空表,以true和false返回结果
      Status IsEmpty( LinkList L);

      //返回链表当中头节点的位置
      int GetHead( LinkList L);

      //返回链表当中最后一个节点的位置
      int GetLast( LinkList L);

      //由当前p指向的位置,查找p的邻接前一个节点的位置
      int PriorPos( LinkList L, Link p);

      //由当前p指向的位置,查找p的下一个邻接元素的位置
      int NextPos( LinkList L, Link p);

      //获取当前链表内第i个元素的位置,如果i不存在,则ERROR
      Status LocatePos( LinkList L, Link &p, int i);

      //查找当前链表当中与给定内容e相符的第一个元素的位置,找不到则返回Error
      Status  LocateElem( LinkList L, ElemType e, Status ( *compare)( ElemType ,ElemType));

      //遍历整个链表,如果遍历失败,则返回falsh
      Status ListTraverse( LinkList L, Status (*Visit)(LinkList));

       

      发表于 @ 2007年12月21日 12:49:00|评论(loading...)|编辑

      新一篇: 链表作用 | 旧一篇: c&c++

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © silencezhujianhua