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]

  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/fleetwgx/p/1449080.html
Copyright © 2011-2022 走看看