Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class AdjNode {
- private:
- int nodeNo;
- AdjNode* next;
- public:
- AdjNode();
- AdjNode(int u, AdjNode* n);
- int GetNode();
- AdjNode* GetNext();
- void insertAdjNode(int u);
- void deleteAdjNode(int u);
- friend ostream& operator<<(ostream& out, AdjNode* node);
- };
- AdjNode::AdjNode() {
- nodeNo = -1;
- next = NULL;
- }
- AdjNode::AdjNode(int u, AdjNode* n) {
- nodeNo = u;
- next = n;
- }
- int AdjNode::GetNode() {
- return nodeNo;
- }
- AdjNode* AdjNode::GetNext() {
- return next;
- }
- void AdjNode::insertAdjNode(int u) {
- if (this->nodeNo == u)
- return;
- AdjNode* temp = this->next;
- AdjNode* prevTemp = NULL;
- if (temp == NULL) {
- temp = new AdjNode(u, NULL);
- this->next = temp;
- return;
- }
- if (temp->next == NULL) {
- AdjNode* newNode = new AdjNode(u, NULL);
- temp->next = newNode;
- return;
- }
- while (temp->next->nodeNo <= u) {
- if (temp->next->nodeNo == u) {
- return;
- }
- if (temp->next == NULL) {
- AdjNode* newNode = new AdjNode(u, NULL);
- temp->next = newNode;
- return;
- }
- prevTemp = temp;
- temp = temp->next;
- if (temp->next == NULL) {
- break;
- }
- }
- AdjNode* newNode = new AdjNode(u, temp->next);
- temp->next = newNode;
- }
- void AdjNode::deleteAdjNode(int u) {
- if (this->nodeNo == u)
- return;
- AdjNode* temp = this->next;
- AdjNode* prevTemp = NULL;
- if (temp == NULL)
- return;
- while (temp->nodeNo != u) {
- prevTemp = temp;
- temp = temp->next;
- if (temp == NULL)
- return;
- }
- if(prevTemp != NULL)
- prevTemp->next = temp->next;
- this->next = temp->next;
- delete temp;
- }
- ostream& operator<<(ostream& out, AdjNode* node) {
- if (node->GetNext() == NULL)
- return out;
- AdjNode* temp = node->GetNext();
- out << node->GetNode() << ": ";
- bool lolz1337 = true;
- while (temp != NULL) {
- if (!lolz1337)
- out << ", ";
- out << temp->GetNode();
- temp = temp->GetNext();
- lolz1337 = false;
- }
- return out;
- }
- int main() {
- AdjNode* node1 = new AdjNode(1, NULL);
- AdjNode* node2 = new AdjNode(2, NULL);
- AdjNode* node3 = new AdjNode(3, NULL);
- AdjNode* node4 = new AdjNode(4, NULL);
- AdjNode* node5 = new AdjNode(5, NULL);
- node1->insertAdjNode(2);
- node1->insertAdjNode(3);
- node1->insertAdjNode(6);
- node1->insertAdjNode(7);
- node1->insertAdjNode(5);
- cout << node1 << endl;
- node1->deleteAdjNode(2);
- cout << node1 << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement