zoukankan      html  css  js  c++  java
  • 单循环链表类的定义和实现

    cirlinklist.h的重要性:

    typedef int ElemType ;

    typedef struct Lnode{

    ElemType data;

    Lnode *next;

    }LNode;

    class cirlinklist

    private :

    LNode * head;

    LNode * curr;

                                        int count;//奇怪这个为什么设定为private,却在那个什么函数中可见.这其实涉及到一个关于 // private的问题

    public:

    //构造函数

    //析构函数

    //

    //清空单链表

    //检查单链表是否为空?

    //返回指向第pos个结点的指针

    //返回单链表中指定的序号的结点值

    //历遍单链表

    //当前指针curr指向pos结点并返回curr,需要研究这个函数的必要性

    //当前指针指向下一个结点并且返回

    //判断单循环链表当前指针curr==head否?

    //判断单链表当前指针curr->next是否到达表未?

    //删除单链表当前指针curr->next所指结点,并返回其值

    //从单链表中查找元素

    //更新单链表中给定的元素

    //向单链表第pos个结点插入域值未item的新结点

    //从链表中删除第pos个结点并且返回被删结点的data

    //一些函数我们还是要把他们独立封装出来,以便更好利用.

    //关于这些函数的结构问题,要参考软件工程有关资料.

    image

    出现了这样情况是在这两行写错了

    ~cirlinklist(){ delete head;}

    LNode *CreateCLinkL( int,int,int mark=0;)

    改为

    ~cirlinklist(){ delete head;}

    LNode *CreateCLinkL( int,int,int mark=0);

    这是一个细节问题,也要适当主意一下;

    代码的一些原理:

    LNode *cirlinklist ::CreateCLinkL(int n, int m,int mark)
    {

    ElemType x, a[LEN];
    srand(m);
    for(int i=0,i<n;i++) a[i]=rand()%100;
    for(i=0;i<n-1;i++)
    {
         int k=i;
         for (int j=i+1;j<n;j++)
             if (a[k]>a[j])
                 k=j;
             if (k!=i)
             {x=a[k];a[k]=a[i];a[i]=x;}
    }

    不要被这几i,j,k,搞混了

    我们从最内的分析起:

         int k=i;
         for (int j=i+1;j<n;j++)
             if (a[k]>a[j])
                 k=j;
             if (k!=i)
             {x=a[k];a[k]=a[i];a[i]=x;}

    这一段的分析

    a[0],a[1],a[2],...a[i],a[i+1],a[i+2],......a[n-1]

  • 相关阅读:
    QML用Qt.labs.settings实现保存用户设置
    周练1
    Django的Hello World
    python 笔记
    Qt Creator 搭配Git 版本控制
    Windows系统下在Git Bash中把文件内容复制到剪贴板的命令
    【转】Qt之JSON保存与读取
    Qt Creator 中文编译失败 怎么办
    Treap树 笔记
    【POJ1037】A decorative fence(DP)
  • 原文地址:https://www.cnblogs.com/fleetwgx/p/1449080.html
Copyright © 2011-2022 走看看