查看完整版本: (已解決)c++ 作業想不懂...
頁: [1]

peterma 發表於 2018-6-23 02:50 AM

(已解決)c++ 作業想不懂...

本帖最後由 peterma 於 2018-6-23 09:58 PM 編輯

#include <iostream>using namespace std;
class Node{public:        intdata;            Node*nextNode, *preNode;        };
class Dlist{    public:        Node *head,*tail, *now;        Dlist(){head = tail = NULL;}        voidinsert(int x);        voidshow();        voidremove(int y);        voidreverseShow();};
void Dlist::insert(int x) {   Node *newnode = newNode;   newnode->data = x;   newnode->nextNode =newnode->preNode=NULL;   if (head ==NULL)   {       head = tail = newnode;   }   else   {          tail->nextNode = newnode ;          newnode->preNode =tail;          tail = newnode;   }}
//從頭印到尾void Dlist::show(){}
//移除含y值節`點,若Y值不存在,則印出不存在void Dlist::remove(int y){};
//將串列之值,由最後元素倒著印回來void Dlist::reverseShow(){
};
void main(){    Dlist aa;        aa.insert(10);        aa.insert(11);         aa.insert(12);        aa.insert(13);        aa.show();//應印出10, 11, 12, 13, 跳行       aa.remove(10);        aa.reverseShow();//應印出13, 12, 11跳行        aa.remove(13);        aa.show();//應印出11, 12, 跳行        aa.insert(15);        aa.reverseShow();//應印出15, 12, 11 跳行        system("pause");--------------------------------------------------------------------------------newnode->nextNode =newnode->preNode=NULL;   if (head ==NULL)   {       head = tail = newnode;   }   else   {          tail->nextNode = newnode ;          newnode->preNode =tail;          tail = newnode;   }
這一段我看不懂....有大大能說明一下嗎?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

sggleeee 發表於 2018-6-23 08:57 PM

幫大大將詢問的那一段加上註解說明,供您參考....
希望有幫到您.....
#include <iostream>
#include <iomanip>

using namespace std;

class Node
{
public:
        int data;
        Node *nextNode, *preNode;
};

class List
{
public:
        Node *head,*tail, *now;
        List(){head = tail = NULL;}
        void insert(int data);
        void show();
        void remove(int data);
        void reverseShow();
};

void List::insert(int data)
{
   Node *newnode = new Node;  //建立 newnode

   newnode->data = data;  //指定data 給newnode->data
   newnode->nextNode = newnode->preNode = NULL;  //將newnode的nextNode與preNode指向NULL

   //如果head為NULL,表示當前這個 newnode 將成為為List中第一個Node, 所以當前這個 newnode 既是頭也是尾
   if (head ==NULL)  
       head = tail = newnode;  //將head與tail指向這個newnode

   //如果head不是NULL, 表示List中已有Node, 將List中最後一個node的nextNode指向 newnode,
   //將 newnode 的preNode指向List中原本最後一個Node
   else  
   {
      tail->nextNode = newnode;
      newnode->preNode =tail;
      tail = newnode; //因為newnode加入後成為最後一個node, 所以將tail指向newnode
   }
}

void List::show()
{
        Node *n;
       
        for(n = head; n!=NULL; n=n->nextNode)
        {
           cout<<n->data<<setw(4);               
        }
        cout<<"\n";       
}



void List::reverseShow()
{
        Node *n;
       
        for(n=tail; n!=NULL; n=n->preNode)
        {
           cout<<n->data<<setw(4);               
        }
        cout<<"\n";       
}

void List::remove(int data)
{
        Node *n;

        if (head==NULL)
        {
            cout<<"Can not remove data because the list is already empty !"<<endl;
        }
        else if(head==tail&&head->data==data)       
        {
                n=head;
                head=tail=NULL;
                delete n;
        }
        else
        {
                for(n = head; n!=NULL; n=n->nextNode)
                {   
                        if(n->data==data)
                        {          
                                if (n==head)
                                {
                                        head=n->nextNode;
                                        head->preNode=NULL;
                                }else if (n==tail)
                                {
                                        tail=n->preNode;
                                        tail->nextNode=NULL;
                                }else
                                {
                                        n->preNode->nextNode = n->nextNode;
                                        n->nextNode->preNode=n->preNode;
                                }
                                delete n;
                                break;
                        }
                }       
        }       
}


void main()
{
        List aa;

        aa.insert(10);
        aa.insert(11);
        aa.insert(12);
        aa.insert(13);
        aa.show();
        aa.remove(10);
        aa.reverseShow();
        aa.remove(13);
        aa.show();
        aa.insert(15);
        aa.reverseShow();

        system("Pause");
}
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

peterma 發表於 2018-6-23 09:57 PM

sggleeee 發表於 2018-6-23 08:57 PM static/image/common/back.gif
幫大大將詢問的那一段加上註解說明,供您參考....
希望有幫到您.....

原來是這樣!感謝您費工夫幫我註解!太感激了><

jackyo04 發表於 2018-6-28 02:27 PM

其實你可以到MSDN找..
https://msdn.microsoft.com/zh-tw/
看英文的比較容易懂,中文的我是看不太懂就是了,很多東西很難用中文解釋..
頁: [1]