473,772 Members | 2,510 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Assistance with linked lists

I have written some code to accept input and place this input at the
beginning or end of a list, but I need assistance including a class so that
it will allow input of a phone number that is properly formatted. I'll post
my code below. Thanks in advance.

This is the code for the linked list. It tests using int's and string's.

#ifndef LIST_H
#define LIST_H

#include <iostream>
using std::cout;

#include "Listnode.h "

template< typename NODETYPE >
class List
{
public:
List();
~List();
void insertAtFront( const NODETYPE & );
void insertAtBack( const NODETYPE & );
bool removeFromFront ( NODETYPE & );
bool removeFromBack( NODETYPE & );
bool isEmpty() const;
void print() const;
private:
ListNode< NODETYPE *firstPtr;
ListNode< NODETYPE *lastPtr;

// utility function to allocate new node
ListNode< NODETYPE *getNewNode( const NODETYPE & );
}; // end class List

// default constructor
template< typename NODETYPE >
List< NODETYPE >::List()
: firstPtr( 0 ), lastPtr( 0 )
{
}

// destructor
template< typename NODETYPE >
List< NODETYPE >::~List()
{
if ( !isEmpty() ) // List is not empty
{
cout << "Destroying nodes ...\n";

ListNode< NODETYPE *currentPtr = firstPtr;
ListNode< NODETYPE *tempPtr;

while ( currentPtr != 0 ) // delete remaining nodes
{
tempPtr = currentPtr;
cout << tempPtr->data << '\n';
currentPtr = currentPtr->nextPtr;
delete tempPtr;
} // end while
} // end if

cout << "All nodes destroyed\n\n";
} // end List destructor

// insert node at front of list
template< typename NODETYPE >
void List< NODETYPE >::insertAtFron t( const NODETYPE &value )
{
ListNode< NODETYPE *newPtr = getNewNode( value ); // new node

if ( isEmpty() ) // List is empty
firstPtr = lastPtr = newPtr; // new list has only one node
else // List is not empty
{
newPtr->nextPtr = firstPtr; // point new node to previous 1st node
firstPtr = newPtr; // aim firstPtr at new node
} // end else
} // end function insertAtFront

// insert node at back of list
template< typename NODETYPE >
void List< NODETYPE >::insertAtBack ( const NODETYPE &value )
{
ListNode< NODETYPE *newPtr = getNewNode( value ); // new node

if ( isEmpty() ) // List is empty
firstPtr = lastPtr = newPtr; // new list has only one node
else // List is not empty
{
lastPtr->nextPtr = newPtr; // update previous last node
lastPtr = newPtr; // new last node
} // end else
} // end function insertAtBack

// delete node from front of list
template< typename NODETYPE >
bool List< NODETYPE >::removeFromFr ont( NODETYPE &value )
{
if ( isEmpty() ) // List is empty
return false; // delete unsuccessful
else
{
ListNode< NODETYPE *tempPtr = firstPtr; // hold tempPtr to delete

if ( firstPtr == lastPtr )
firstPtr = lastPtr = 0; // no nodes remain after removal
else
firstPtr = firstPtr->nextPtr; // point to previous 2nd node

value = tempPtr->data; // return data being removed
delete tempPtr; // reclaim previous front node
return true; // delete successful
} // end else
} // end function removeFromFront

// delete node from back of list
template< typename NODETYPE >
bool List< NODETYPE >::removeFromBa ck( NODETYPE &value )
{
if ( isEmpty() ) // List is empty
return false; // delete unsuccessful
else
{
ListNode< NODETYPE *tempPtr = lastPtr; // hold tempPtr to delete

if ( firstPtr == lastPtr ) // List has one element
firstPtr = lastPtr = 0; // no nodes remain after removal
else
{
ListNode< NODETYPE *currentPtr = firstPtr;

// locate second-to-last element
while ( currentPtr->nextPtr != lastPtr )
currentPtr = currentPtr->nextPtr; // move to next node

lastPtr = currentPtr; // remove last node
currentPtr->nextPtr = 0; // this is now the last node
} // end else

value = tempPtr->data; // return value from old last node
delete tempPtr; // reclaim former last node
return true; // delete successful
} // end else
} // end function removeFromBack

// is List empty?
template< typename NODETYPE >
bool List< NODETYPE >::isEmpty() const
{
return firstPtr == 0;
} // end function isEmpty

// return pointer to newly allocated node
template< typename NODETYPE >
ListNode< NODETYPE *List< NODETYPE >::getNewNode (
const NODETYPE &value )
{
return new ListNode< NODETYPE >( value );
} // end function getNewNode

// display contents of List
template< typename NODETYPE >
void List< NODETYPE >::print() const
{
if ( isEmpty() ) // List is empty
{
cout << "The list is empty\n\n";
return;
} // end if

ListNode< NODETYPE *currentPtr = firstPtr;

cout << "The list is: ";

while ( currentPtr != 0 ) // get element data
{
cout << currentPtr->data << ' ';
currentPtr = currentPtr->nextPtr;
} // end while

cout << "\n\n";
} // end function print

#endif

#ifndef LISTNODE_H
#define LISTNODE_H
template< typename NODETYPE class List;

template< typename NODETYPE >
class ListNode
{
friend class List< NODETYPE >;

public:
ListNode( const NODETYPE & );
NODETYPE getData() const;
private:
NODETYPE data;
ListNode< NODETYPE *nextPtr; // next node in list
}; // end class ListNode

// constructor
template< typename NODETYPE >
ListNode< NODETYPE >::ListNode( const NODETYPE &info )
: data( info ), nextPtr( 0 )
{
} // end ListNode constructor

// return copy of data in node
template< typename NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const
{
return data;
} // end function getData

#endif

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <string>
using std::string;

#include "List.h"

// function to test a List
template< typename T >
void testList( List< T &listObject, const string &typeName )
{
cout << "Testing a List of " << typeName << " values\n";
instructions(); // display instructions

int choice; // store user choice
T value; // store input value

do // perform user-selected actions
{
cout << "? ";
cin >choice;

switch ( choice )
{
case 1: // insert at beginning
cout << "Enter " << typeName << ": ";
cin >value;
listObject.inse rtAtFront( value );
listObject.prin t();
break;
case 2: // insert at end
cout << "Enter " << typeName << ": ";
cin >value;
listObject.inse rtAtBack( value );
listObject.prin t();
break;
case 3: // remove from beginning
if ( listObject.remo veFromFront( value ) )
cout << value << " removed from list\n";

listObject.prin t();
break;
case 4: // remove from end
if ( listObject.remo veFromBack( value ) )
cout << value << " removed from list\n";

listObject.prin t();
break;
} // end switch
} while ( choice != 5 ); // end do...while

cout << "End list test\n\n";
} // end function testList
void instructions()
{
cout << "Enter one of the following:\n"
<< " 1 to insert at beginning of list\n"
<< " 2 to insert at end of list\n"
<< " 3 to delete from beginning of list\n"
<< " 4 to delete from end of list\n"
<< " 5 to end list processing\n";
} // end function instructions

int main()
{
// test List of int values
List< int intList;
testList( intList, "integer" );

// test List of string values
List< string stringList;
testList( stringList, "string" );

return 0;
} // end main

I want to be able to include my phone number class so that this will accept
phone numbers as input. Here is the phone class

#ifndef PHONENUMBER_H
#define PHONENUMBER_H

#include <iostream>
using std::ostream;
using std::istream;

#include <string>
using std::string;

#include <iomanip>
using std::setw;

class PhoneNumber
{
friend ostream &operator<<( ostream &, const PhoneNumber & );
friend istream &operator>>( istream &, PhoneNumber & );
private:
string areaCode; // 3-digit area code
string exchange; // 3-digit exchange
string line; // 4-digit line
}; // end class PhoneNumber

ostream &operator<<( ostream &output, const PhoneNumber &number )
{
output << "(" << number.areaCode << ") "
<< number.exchange << "-" << number.line;
return output; // enables cout << a << b << c;
} // end function operator<<

istream &operator>>( istream &input, PhoneNumber &number )
{
input.ignore(); // skip (
input >setw( 3 ) >number.areaCod e; // input area code
input.ignore( 2 ); // skip ) and space
input >setw( 3 ) >number.exchang e; // input exchange
input.ignore(); // skip dash (-)
input >setw( 4 ) >number.line; // input line
return input; // enables cin >a >b >c;
} // end function operator>>

#endif
Dec 5 '06 #1
13 2099
* B. Williams:
I need assistance including a class so that
it will allow input of a phone number that is properly formatted.
Try to be a little more specific. Do you want someone to write the code
for you?

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Dec 5 '06 #2

"Alf P. Steinbach" <al***@start.no wrote in message
news:4t******** *****@mid.indiv idual.net...
>* B. Williams:
>I need assistance including a class so that it will allow input of a
phone number that is properly formatted.

Try to be a little more specific. Do you want someone to write the code
for you?

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
I apologize for not being more specific. I know both of these work
independently, but I need help with incoporating the phone number class into
the program. I couldn't figure out any better way to get the program to
accept phone numbers. I tried inputting the phone number as a string, but
the blank space ends the string. I guess I am asking for some assistance on
writing the code, but I just need a kick start. This is the code to test the
phone number class.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "PhoneNumbe r.h"

int main()
{
PhoneNumber phone;

cout << "Enter phone number in the form (123) 456-7890:" << endl;

cin >phone;

cout << "The phone number entered was: ";

cout << phone << endl;
return 0;
} // end main.
Dec 5 '06 #3
B. Williams <wi*******@hotm ail.comwrote:
I tried inputting the phone number as a string, but
the blank space ends the string.
Try using std::getline() instead.

--
Marcus Kwok
Replace 'invalid' with 'net' to reply
Dec 5 '06 #4

"B. Williams" <wi*******@hotm ail.comwrote in message
news:B4******** *********@newsf e13.lga...
>
"Alf P. Steinbach" <al***@start.no wrote in message
news:4t******** *****@mid.indiv idual.net...
>>* B. Williams:
>>I need assistance including a class so that it will allow input of a
phone number that is properly formatted.

Try to be a little more specific. Do you want someone to write the code
for you?

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

I apologize for not being more specific. I know both of these work
independently, but I need help with incoporating the phone number class
into the program. I couldn't figure out any better way to get the program
to accept phone numbers. I tried inputting the phone number as a string,
but the blank space ends the string. I guess I am asking for some
assistance on writing the code, but I just need a kick start. This is the
code to test the phone number class.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "PhoneNumbe r.h"

int main()
{
PhoneNumber phone;

cout << "Enter phone number in the form (123) 456-7890:" << endl;

cin >phone;

cout << "The phone number entered was: ";

cout << phone << endl;
return 0;
} // end main.
And what happens when you run this code? I see you have
operator<< and operator>overri dden for the class PhoneNumber and without
looking at the code real closely or testing it, it looks about right. So
what's the problem when you try this?
Dec 5 '06 #5

B. Williams wrote in message ...
>
"Alf P. Steinbach" <al***@start.no wrote in message ...
>Try to be a little more specific. Do you want someone to write the code
for you?

I apologize for not being more specific. I know both of these work
independentl y, but I need help with incoporating the phone number class into
the program. I couldn't figure out any better way to get the program to
accept phone numbers. I tried inputting the phone number as a string, but
the blank space ends the string. I guess I am asking for some assistance on
writing the code, but I just need a kick start. This is the code to test the
phone number class.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "PhoneNumbe r.h"
// suggestion:
istream& operator>>( istream &input, PhoneNumber &number ){
std::string line;
std::getline( input, line );
if( /* check something */ ){ /* do something */ } // like 'line.empty()'

if( '(' == line.at(0) && ')' == line.at(4) ){
number.areaCode = line.substr( 1, 3 ); // input area code
}
else{
number.areaCode = "GIGO";
}
number.exchange = line.substr( 6, 3 ); // input exchange
// etc.

// OR:

if( '(' == input.peek() ){
input.ignore();
}
if( input ){
input >number.areaCod e;
if( ')' == number.areaCode .at(3) ){
number.areaCode .erase(3);
}
}
// etc.

return input; // enables cin >a >b >c;
} // end function operator>>
>
int main(){
PhoneNumber phone;
cout << "Enter phone number in the form (123) 456-7890:" << endl;
cin >phone;
cout << "The phone number entered was: ";
cout << phone << endl;
return 0;
} // end main.
--
Bob R
POVrookie
Dec 6 '06 #6

B. Williams wrote:
I have written some code to accept input and place this input at the
beginning or end of a list, but I need assistance including a class so that
it will allow input of a phone number that is properly formatted. I'll post
my code below. Thanks in advance.
#include<iostre am>
#include<list>
#include<iterat or>
#include<boost/regex.hpp>
#include<casser t>

using namespace std;
class PhoneNumber
{ public:
PhoneNumber(con st string a, const string e, const string s):
area_code(a), exchange(e), station(s){};
string area_code, exchange, station;
};

ostream &operator<<(ost ream &o, const PhoneNumber &n)
{
return o << "(" << n.area_code << ") "
<< n.exchange << "-" << n.station;
}

// This should probably be something fancier
// http://en.wikipedia.org/wiki/North_A...Numbering_Plan
static const boost::regex
valid_ph("\\s*\ \(?(\\d{3})\\)? \\s*[-.]?\\s*" // Area Code
"(\\d{3})\\ s*[-.]?\\s*" // Exchange
"(\\d{4})\\s*") ; // Station

void tests(void)
{
using namespace boost;
assert( regex_match("(8 00)555-1212" ,valid_ph));
assert( regex_match("80 0-555-1212 " ,valid_ph));
assert( regex_match("80 0.555.1212" ,valid_ph));
assert( regex_match("(8 00) 555 1212",valid_ph) );
assert( regex_match("80 0 555 1212" ,valid_ph));
assert( regex_match("80 05551212" ,valid_ph));
assert(not regex_match("80 0 555 12129" ,valid_ph));
assert(not regex_match(" 800 555 121" ,valid_ph));
assert(not regex_match("(f oo) bar-quux",valid_ph) );
}

int main(int argc, char* argv[])
{
string p;
list<PhoneNumbe rl;
boost::smatch m;

tests();
cout << "Enter Phone numbers (blank line to stop):\n";
while(true)
{
getline(cin,p);
if(not boost::regex_se arch(p,m,valid_ ph)) break;
l.push_back(Pho neNumber (m[1].str(),m[2].str(),m[3].str()));
}

cout << "Phone numbers:\n";
copy(l.begin(), l.end(),ostream _iterator<Phone Number>(cout, "\n"));
return 0;
}

Dec 6 '06 #7

"BobR" <Re***********@ worldnet.att.ne twrote in message
news:Hn******** *************@b gtnsc05-news.ops.worldn et.att.net...
>
B. Williams wrote in message ...
>>
"Alf P. Steinbach" <al***@start.no wrote in message ...
>>Try to be a little more specific. Do you want someone to write the code
for you?

I apologize for not being more specific. I know both of these work
independently , but I need help with incoporating the phone number class
into
the program. I couldn't figure out any better way to get the program to
accept phone numbers. I tried inputting the phone number as a string, but
the blank space ends the string. I guess I am asking for some assistance
on
writing the code, but I just need a kick start. This is the code to test
the
phone number class.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "PhoneNumbe r.h"

// suggestion:
istream& operator>>( istream &input, PhoneNumber &number ){
std::string line;
std::getline( input, line );
if( /* check something */ ){ /* do something */ } // like 'line.empty()'

if( '(' == line.at(0) && ')' == line.at(4) ){
number.areaCode = line.substr( 1, 3 ); // input area code
}
else{
number.areaCode = "GIGO";
}
number.exchange = line.substr( 6, 3 ); // input exchange
// etc.

// OR:

if( '(' == input.peek() ){
input.ignore();
}
if( input ){
input >number.areaCod e;
if( ')' == number.areaCode .at(3) ){
number.areaCode .erase(3);
}
}
// etc.

return input; // enables cin >a >b >c;
} // end function operator>>
>>
int main(){
PhoneNumber phone;
cout << "Enter phone number in the form (123) 456-7890:" << endl;
cin >phone;
cout << "The phone number entered was: ";
cout << phone << endl;
return 0;
} // end main.

--
Bob R
POVrookie
Bob,
What I am want to do is to incorporate the phone class into the list class
that I posted in my origional post. Will you assist me with that?
Dec 6 '06 #8

B. Williams wrote in message ...
>
Bob,
What I am want to do is to incorporate the phone class into the list class
that I posted in my origional post. Will you assist me with that?
I'll do what I can.

What do you mean by "incorporat e the phone class into the list class"?

class Phone{};
class List{
Phone phoneNum;
};

--- or ---

class List{
Phone phoneNum;
class Phone{};
};

--- or ---

class List{
std::string phoneNum;
std::string areacode;
std::string prefix;
std::string numberpart;
public:
bool GetPhoneNumber( std::string &phone);
};

Your class List is templated. Will all the types it uses have a phone number?
"I can write to my friend 'int', because I have the address, but, I can't
find int's phone number! When I ask 'double' all I get is 1.234567890e+09 !"
<G>

Is this what you want to do?:

List<PhoneNumbe rphonebook;

--
Bob R
POVrookie
Dec 6 '06 #9

"BobR" <Re***********@ worldnet.att.ne twrote in message
news:f1******** ************@bg tnsc04-news.ops.worldn et.att.net...
>
B. Williams wrote in message ...
>>
Bob,
What I am want to do is to incorporate the phone class into the list class
that I posted in my origional post. Will you assist me with that?

I'll do what I can.

What do you mean by "incorporat e the phone class into the list class"?

class Phone{};
class List{
Phone phoneNum;
};

--- or ---

class List{
Phone phoneNum;
class Phone{};
};

--- or ---

class List{
std::string phoneNum;
std::string areacode;
std::string prefix;
std::string numberpart;
public:
bool GetPhoneNumber( std::string &phone);
};

Your class List is templated. Will all the types it uses have a phone
number?
"I can write to my friend 'int', because I have the address, but, I can't
find int's phone number! When I ask 'double' all I get is
1.234567890e+09 !"
<G>

Is this what you want to do?:

List<PhoneNumbe rphonebook;

--
Bob R
POVrookie
Bob,
I don't really need the template because I just want to create a linked list
of phone numbers. I don't care about int' strings, etc... I probably went
about this the wrong way but I like to break things down because I'm fairly
new. That's why I have seperate code for both the linked list and the
phonenumber. I have gotten them to work seperately, now I just want to
phonenumber class to work so that I can create a linked list.
Dec 6 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

7
4831
by: Chris Ritchey | last post by:
Hmmm I might scare people away from this one just by the title, or draw people in with a chalange :) I'm writting this program in c++, however I'm using char* instead of the string class, I am ordered by my instructor and she does have her reasons so I have to use char*. So there is alot of c in the code as well Anyways, I have a linked list of linked lists of a class we defined, I need to make all this into a char*, I know that I...
10
15131
by: Kent | last post by:
Hi! I want to store data (of enemys in a game) as a linked list, each node will look something like the following: struct node { double x,y; // x and y position coordinates struct enemy *enemydata; // Holds information about an enemy (in a game) // Its a double linked list node
1
12846
by: Booser | last post by:
// Merge sort using circular linked list // By Jason Hall <booser108@yahoo.com> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> //#define debug
12
2514
by: Jonathan Bartlett | last post by:
Just finished a new IBM DeveloperWorks article on linked lists, and thought you all might be interested. It's not an introduction -- it instead covers some of the more interesting aspects of linked lists. http://www.ibm.com/developerworks/linux/library/l-listproc/ Jon ---- Learn to program using Linux assembly language http://www.cafeshops.com/bartlettpublish.8640017
3
3273
by: s_subbarayan | last post by:
Dear all, 1)In one of our implementation for an application we are supposed to collate two linked lists.The actual problem is like this: There are two singularly linked lists, the final output will be a "perfectly shuffle" of the lists together into a single list. The new list should consist of consecutively alternating nodes from both lists.Note that both these linked lists have same kind of data structure in their nodes.
4
3600
by: MJ | last post by:
Hi I have written a prog for reversing a linked list I have used globle pointer Can any one tell me how I can modify this prog so that I dont have to use extra pointer Head1. When I reverse a LL using the recursive call how to change the last node pointer to head and head->next to null without using the extra global pointer Mayur
12
3954
by: joshd | last post by:
Hello, Im sorry if this question has been asked before, but I did search before posting and couldnt find an answer to my problem. I have two classes each with corresponding linked lists, list1 and list2, each node within list1 has various data and needs to have a pointer to the corresponding node in list2, but I cant figure out how to do this. Could someone explain what I might be missing, or maybe point me in the direction of a good...
19
7826
by: Dongsheng Ruan | last post by:
with a cell class like this: #!/usr/bin/python import sys class Cell: def __init__( self, data, next=None ): self.data = data
51
8652
by: Joerg Schoen | last post by:
Hi folks! Everyone knows how to sort arrays (e. g. quicksort, heapsort etc.) For linked lists, mergesort is the typical choice. While I was looking for a optimized implementation of mergesort for linked lists, I couldn't find one. I read something about Mcilroy's "Optimistic Merge Sort" and studied some implementation, but they were for arrays. Does anybody know if Mcilroys optimization is applicable to truly linked lists at all?
0
9621
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10264
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10106
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10039
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8937
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6716
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5484
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4009
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3610
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.