1. ## 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. 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.

3. 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>

private:
int count;

struct node    {
int val;
struct node *next;
struct node *prev;
};
struct node *tail;
struct node *tailprev;

public:
createnode(int);
deletenode(int);
insertnode(int);
modify(int);
view(int);
search(int);
viewall();
browse();
int getnum();

};

{
if(count==0)
else
{
cout<<"\nThe nodes with that value are > \n\n\n";
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;
}

{
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;
{
present=present->next;
}

{
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;
}
count++;
cout<<"\nNode sucessfully inserted";
}

getch();
return 0;
}

{
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;
}

{
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;
}

{
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;
}

{
return count;

}
{
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;

}

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;
}

{
if(count==0)
else
{
cout<<"\nThe nodes are > \n\n\n";
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;
}

{
count=0;
tailprev=tail;
}

{
if(count==0)
{
}
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;
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;
}```