頁:
[1]
(已解決)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> 幫大大將詢問的那一段加上註解說明,供您參考....
希望有幫到您.....
#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> sggleeee 發表於 2018-6-23 08:57 PM static/image/common/back.gif
幫大大將詢問的那一段加上註解說明,供您參考....
希望有幫到您.....
原來是這樣!感謝您費工夫幫我註解!太感激了>< 其實你可以到MSDN找..
https://msdn.microsoft.com/zh-tw/
看英文的比較容易懂,中文的我是看不太懂就是了,很多東西很難用中文解釋..
頁:
[1]