demo_singlelinkedlist : Single Linked List

โจทย์สำหรับ
ตัวอย่าง Single Linked List
#include <iostream>

using namespace std;
class SNode{
   public:
      string  data;
      SNode *link;
      SNode(string data){
         this->data = data;
         this->link = NULL;
      }
};

class SLinkedList {
  public:
      SNode *first, *last;
      SLinkedList(){
         first = NULL;
         last = NULL;
      }
     ~ SLinkedList(){
         clear();
     }

   // เพิ่ม x เข้าไปที่ท้ายของรายการ
    SNode* add(string x){
      SNode *p = new SNode(x);
      if(last!=NULL)  last->link = p;
      if(first==NULL) first = p;
      last = p;
      return p;
  }
  int size( ){
      int n=0;
      SNode *p=first;
      while(p!=NULL){
         n++;
         p=p->link;
      }
      return n;
  }
  SNode* getNode(int index){
      int n=0;
      SNode *p=first;
      while(p!=NULL){
         if(n==index) return p;
         n++;
         p=p->link;
      }
      cerr << "List index out of bounds";
      return NULL;
  }

  string get(int index){
      SNode *p=getNode(index);
      if(p!=NULL) return p->data;
      return "";
  }
  SNode *set(int index, string x) {
      SNode *p=getNode(index);
      if(p!=NULL) p->data = x;
      return p;
  }

  SNode *insert(SNode *start, string x){
      SNode *p = new SNode(x);
      if(start==last){
         last = p;
      }else{
         p->link = start->link;
      }
      start->link = p;
      return p;
  }

  SNode *insert(int index, string x){
      SNode *start = getNode(index);
      if(start==NULL) return NULL;
      return insert(start, x);
  }

  SNode *getPrev(SNode *n){
     SNode *p = first;
     while(p!=NULL){
        if(p->link == n) return p;
        p=p->link;
     }
     return NULL;
  }

  //กำหนดค่าสมาชิกตำแหน่งที่ index ให้เท่ากับ x

  SNode indexOf(string x){}  //ค้นหาตำแหน่งของ x ในรายการ

  void remove(string x){}  //ลบสมาชิกตำแหน่งที่ index ออกจากรายการ
  void clear(){}  //ลบสมาชิกทั้งหมดทำให้เป็นรายการว่าง
};


int main()
{
    SLinkedList  list;

    list.add("Ant") ;
    list.add("Bat") ;
    list.add("Cat") ;

    cout << list.get(1);   // แสดง  Bat
    list.set(1,"Bee");       // เปลี่ยน Bat เป็น Bee
    cout << list.get(1);   // แสดง  Bee
    return 0;
}