Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by Uni ( 11 years ago )
#include "stdio.h"
#include <iostream>
using namespace std;

template <class T>
struct node {
 T val;
 node* pNext;
};

template <class T>
node<T>* create(T valueFisrt) {
 node<T>* nodeFirst;
 nodeFirst = new node<T>();
 nodeFirst->val = valueFisrt;
 nodeFirst->pNext = NULL;

 return nodeFirst;
}

template <class T>
void printTrace(node<T>* listLink) {
 node<T>* nodeTmp = listLink;
 while (nodeTmp != NULL) {
  cout << nodeTmp->val << " ";
  nodeTmp = nodeTmp->pNext;
 }
 cout << endl;
}

template <class T>
void insertFirst(node<T>*& listLink, const T& value) {
 node<T>* nodeNew = new node<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = listLink;
  listLink = nodeNew;
 }
}

template <class T>
void insertLast(node<T>* listLink, const T& value) {
 if (listLink == NULL)
  return;

 node<T>* nodeNew = new node<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = NULL;
  node<T>* nodeTmp = listLink;

  while (nodeTmp->pNext != NULL) {
   nodeTmp = nodeTmp->pNext;
  }
  nodeTmp->pNext = nodeNew;
 }
}

template <class T>
void insertMiddle(node<T>* listLink, T match, T value) {

}

template <class T>
struct node2 {
 T val;
 node2* pNext;
 node2* pLast;
};

template <class T>
node2<T>* create2(T valueFisrt) {
 node2<T>* nodeFirst;
 nodeFirst = new node2<T>();
 nodeFirst->val = valueFisrt;
 nodeFirst->pNext = NULL;
 nodeFirst->pLast = NULL;

 return nodeFirst;
}

template <class T>
void printTrace(node2<T>* listLink) {
 node2<T>* nodeTmp = listLink;
 while (nodeTmp != NULL) {
  cout << nodeTmp->val << " ";
  nodeTmp = nodeTmp->pNext;
 }
 cout << endl;
}

template <class T>
void insertFirst(node2<T>*& listLink, const T& value) {
 node2<T>* nodeNew = new node2<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = listLink;
  nodeNew->pLast = NULL;
  listLink->pLast = nodeNew;
  listLink = nodeNew;
 }
}

template <class T>
void insertLast(node2<T>* listLink, const T& value) {
 if (listLink == NULL)
  return;

 node2<T>* nodeNew = new node2<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = NULL;
  node2<T>* nodeTmp = listLink;

  while (nodeTmp->pNext != NULL) {
   nodeTmp = nodeTmp->pNext;
  }
  nodeTmp->pNext = nodeNew;
  nodeNew->pLast = nodeTmp;
 }
}

template <class T>
struct node3 {
 T val;
 node3* pNext;
};

template <class T>
node3<T>* create3(T valueFisrt) {
 node3<T>* nodeFirst;
 nodeFirst = new node3<T>();
 nodeFirst->val = valueFisrt;
 nodeFirst->pNext = nodeFirst;

 return nodeFirst;
}

template <class T>
void printTrace(node3<T>* listLink) {
 if (listLink == NULL)
  return;

 node3<T>* nodeTmp = listLink;
 do {
  cout << nodeTmp->val << " ";
  nodeTmp = nodeTmp->pNext;
 } while (nodeTmp->pNext != listLink);

 cout << endl;
}

template <class T>
void insertFirst(node3<T>*& listLink, const T& value) {
 node3<T>* nodeNew = new node3<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = listLink;
  listLink = nodeNew;
 }
 // Sai, phai cap nhap lai ca pNext cua bien cuoi cung!.
}

template <class T>
void insertLast(node3<T>* listLink, const T& value) {
 if (listLink == NULL)
  return;

 node3<T>* nodeNew = new node3<T>;
 if (nodeNew != NULL) {
  nodeNew->val = value;
  nodeNew->pNext = listLink;
  node3<T>* nodeTmp = listLink;

  while (nodeTmp->pNext != listLink) {
   nodeTmp = nodeTmp->pNext;
  }
  nodeTmp->pNext = nodeNew;
 }
}

int main(int argc, char *argv[]) {
 node3<int>* listLink2 = create3(1);
 insertLast(listLink2, 2);
 insertLast(listLink2, 3);
 insertLast(listLink2, 4);
 insertFirst(listLink2, 5);
 printTrace(listLink2);

 return 0;
}

 

Revise this Paste

Your Name: Code Language: