Thread: Midterm Tomorrow, Link List help

  1. #1
    Registered User
    Join Date
    Oct 2002
    Posts
    6

    Midterm Tomorrow, Link List help

    Can someone give me a link to a linkList tutorial? or help me understand the code for a linkList. Thanks

  2. #2
    http://www.cprogramming.com/tutorial/lesson15.html

    A singly-linked list just simply holds a ptr that points to the next object in the list.
    My Avatar says: "Stay in School"

    Rocco is the Boy!
    "SHUT YOUR LIPS..."

  3. #3
    Its not rocket science vasanth's Avatar
    Join Date
    Jan 2002
    Posts
    1,683
    a double linked list hold a ptr to the previous node as well as the next one... below is a double linked list prog...

    Code:
    # include <iostream.h>
    # include <conio.h>
    # include <process.h>
    
    class linked{
    		private:
    			int count;
    
    			struct node    {
    					int val;
    					struct node *next;
    					struct node *prev;
    					};
    			struct node *head;
    			struct node *tail;
    			struct node *tailprev;
    
    
    
    
    
    		public:
    		linked();
    		createnode(int);
    		deletenode(int);
    		insertnode(int);
    		modify(int);
    		view(int);
    		search(int);
    		viewall();
    		browse();
    		int getnum();
    
    
    		};
    
    
    
    linked::search(int sear)
    {
    if(count==0)
    cout<<"\nThe linked list is empty..";
    else
    {
    cout<<"\nThe nodes with that value are > \n\n\n";
    node *present=head;
    	for(int i=0;i<count;i++)
    	{if(present->val==sear)
    	 {
    	 if(i<9)
    	 cout<<"\nNode 00"<<i+1<<")		 "<<present->val<<"      @ "<<present;
    	 else
    	 if(i>=9 && i<100)
    	 cout<<"\nNode 0"<<i+1<<")		 "<<present->val<<"      @ "<<present;
    	 else
    	 cout<<"\nNode "<<i+1<<") 		"<<present->val<<"      @ "<<present;
    	 }
    	 present=present->next;
    	}
    
    }
    
    
    
    getch();
    return 0;
    }
    
    linked::insertnode(int nodeadd)
    {
    if(nodeadd>count || nodeadd<1)
    cout<<"Sorry the node number does not exist";
    else
    {
    node* newnode=new node;
    int nodeval;
    cout<<"\nEnter the value for the inserted node > ";
    cin>>nodeval;
    newnode->val=nodeval;
    node *present=head;
    for(int i=1;i<nodeadd;i++)
    {
    present=present->next;
    }
    
    if(nodeadd!=1)
    {
    present->prev->next=newnode;
    newnode->prev=present->prev;
    newnode->next=present;
    newnode->val=nodeval;
    present->prev=newnode;
    }
    else
    {
    newnode->prev=present->prev;
    newnode->next=present;
    newnode->val=nodeval;
    present->prev=newnode;
    head=newnode;
    }
    count++;
    cout<<"\nNode sucessfully inserted";
    }
    
    getch();
    return 0;
    }
    
    linked::browse()
    {
    node *present=head;
    char ch;
    int co=1;
    if(count==0)
    cout<<"\nSorry no nodes present";
    while(count!=0)
    {
    gotoxy(30,20);
    cout<<"						";
    gotoxy(30,20);
    cout<<"Node "<<co<<")	"<<present->val<<" @ address "<<present;
    ch=getch();
    if(ch==0x4d)
    {
    if(present->next!=NULL)
    {
    present=present->next;
    co++;
    }
    }
    
    if(ch==0x4b)
    {
    if(present->prev!=NULL)
    {
    present=present->prev;
    co--;
    }
    }
    
    if(ch==27)
    break;
    
    
    }
    
    getch();
    return 0;
    }
    
    
    
    linked::modify(int nodeno)
    {
    node *present=head;
    if(nodeno>count || nodeno<1)
    cout<<"\nThe node no "<<nodeno<<" does not exist.";
    else
    {
    for(int i=1;i<nodeno;i++)
    {
    present=present->next;
    }
    cout<<"\nThe node "<<nodeno<<" contains the value "<<present->val<<" @ "<<present;
    int newval;
    cout<<"\nEnter the new value for the node > ";
    cin>>newval;
    present->val=newval;
    cout<<"\nNode sucessfully modified.";
    
    
    }
    
    getch();
    return 0;
    }
    
    
    linked::view(int nodeno)
    {
    node *present=head;
    if(nodeno>count || nodeno<1)
    cout<<"\nThe node no does not exist.";
    else
    {
    for(int i=1;i<nodeno;i++)
    {
    present=present->next;
    }
    cout<<"\nThe node "<<nodeno<<" contains the value "<<present->val<<" @ "<<present;
    }
    
    getch();
    return 0;
    }
    
    int linked::getnum()
    {
    return count;
    
    }
    linked::deletenode(int nodeno)
    {
    node *present=head;
    if(nodeno>count || nodeno<1)
    cout<<"\nThe node no does not exist.";
    else
    {
    for(int i=1;i<nodeno;i++)
    {
    present=present->next;
    }
    
    
    node *temp=present;
    
    if(temp->prev!=NULL && (nodeno!=count)&& nodeno!=1)
    present->prev->next=present->next;
    
    
    
    if(temp->next!=NULL &&(nodeno!=1))
    present->next->prev=present->prev;
    
    if(temp->prev==NULL)
    {
    present->next->prev=NULL;
    head=present->next;
    
    }
    
    if(temp->next==NULL)
    {
     present->next=NULL;
     tail=present;
    }
    
    cout<<"\n The Node no "<<nodeno<<" with value "<<present->val<<" sucessfully deleted";
    count--;
    }
    getch();
    return 0;
    }
    
    linked::viewall()
    {
    if(count==0)
    cout<<"\nThe linked list is empty..";
    else
    {
    cout<<"\nThe nodes are > \n\n\n";
    node *present=head;
    	for(int i=0;i<count;i++)
    	{
    	 if(i<9)
    	 cout<<"\nNode 00"<<i+1<<")		 "<<present->val<<"      @ "<<present;
    	 else
    	 if(i>=9 && i<100)
    	 cout<<"\nNode 0"<<i+1<<")		 "<<present->val<<"      @ "<<present;
    	 else
    	 cout<<"\nNode "<<i+1<<") 		"<<present->val<<"      @ "<<present;
    	 present=present->next;
    	}
    
    }
    
    return 0;
    }
    
    
    linked::linked()
    {
     count=0;
     head=new node();
     head->val=0;
     head->next=NULL;
     head->prev=NULL;
     tail=head;
     tailprev=tail;
    }
    
    linked::createnode(int newnod)
    {
    if(count==0)
    {
    head->val=newnod;
    }
    else
    {
    tail=new node;
    tail->val=newnod;
    tailprev->next=tail;
    tail->next=NULL;
    tail->prev=tailprev;
    tailprev=tail;
    }
    
    count++;
    return 0;
    }
    
    
    main()
    {
    int nodeno=0;
    linked l1;
    clrscr();
    int option=0;
    while(option!=10)
    {
    clrscr();
    
    cout<<"\n				M E N U";
    cout<<"\n				* * * *";
    cout<<"\n\n\n		                No of nodes present > "<<l1.getnum();
    cout<<"\n\n\n\n\n				1) Create a node";
    cout<<"\n\n			     	2) Delete a node";
    cout<<"\n\n				3) View All node";
    cout<<"\n\n				4) View Particular node";
    cout<<"\n\n				5) Modify a node";
    cout<<"\n\n				6) Browse through node";
    cout<<"\n\n				7) Insert node";
    cout<<"\n\n				8) Search node";
    cout<<"\n\n				9) Use loop to create nodes";
    cout<<"\n\n				10) Exit";
    cout<<"\n\n\n\n\n				Option > ";
    cin>>option;
    clrscr();
    
    
    if(option==1)
    {
    cout<<"\nEnter the value for node "<<l1.getnum()+1<<" > ";
    cin>>nodeno;
    l1.createnode(nodeno);
    }
    
    if(option==2)
    {
    cout<<"\nEnter the node no to be deleted > ";
    cin>>nodeno;
    l1.deletenode(nodeno);
    }
    
    if(option==3)
    {
    l1.viewall();
    getch();
    }
    
    if(option==4)
    {
    cout<<"\nEnter the node no you want to view > ";
    cin>>nodeno;
    l1.view(nodeno);
    }
    
    if(option==5)
    {
     int newval;
     cout<<"\nEnter the node no you want to modify > ";
     cin>>nodeno;
     l1.modify(nodeno);
    }
    if(option==6)
    {
     cout<<"\nTo browse use the left and right arrow keys...press esc to exit";
     l1.browse();
    
    }
    
    if(option==7)
    {
    cout<<"\nEnter the position to insert node > ";
    int node1;
    cin>>node1;
    l1.insertnode(node1);
    }
    
    if(option==8)
    {
    int searc;
    cout<<"\nEnter the value you want to search > ";
    cin>>searc;
    l1.search(searc);
    }
    
    if(option==9)
    {
    int a,b,c;
    cout<<"\nEnter the start point of loop > ";
    cin>>a;
    cout<<"Enter the limit for the loop > ";
    cin>>b;
    cout<<"Enter the step value > ";
    cin>>c;
    int cou=0;
    for(int i=a;i<b;i=i+c)
    {
    cou++;
    l1.createnode(i);
    cout<<"\ncreating new node with value > "<<i;
    }
    cout<<"\n A total of "<<cou<<" nodes have been created";
    getch();
    }
    
    }
    return 0;
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. urgent please please..
    By peter_hii in forum C++ Programming
    Replies: 4
    Last Post: 10-30-2006, 06:35 AM
  2. Replies: 3
    Last Post: 03-04-2005, 02:46 PM
  3. Linked List Help
    By CJ7Mudrover in forum C Programming
    Replies: 9
    Last Post: 03-10-2004, 10:33 PM
  4. singly linked list
    By clarinetster in forum C Programming
    Replies: 2
    Last Post: 08-26-2001, 10:21 PM