|
Ilamparithi wrote: How to convert a Binary tree to Circular linked list?
Why would you want to? homework assignment? or change of design?
Because of that possibility, I won't give you code. Any tree is read very easily. You have a descending key branch and an ascending key branch. A balanced tree has equal descending key branches as ascending key branches, each node is compared high or low to a key search and you follow either branch as appropriate, when you find equal, you stop. A binary tree, like a binary search is a minimal path to solution design, very efficient in search, but very poor design for sequential access. Lists are very poor random search but exceedingly fast in sequential search operations.
To follow a tree in sequential order is easy, you always follow a branch until your reach a bottom leaf and then back track and follow the next.
// psuedo-code this will NOT compile!!
process (node)
{
if (node->left not empty ) process (node->left)
display (node)
if (node->right not empty ) process (node->right)
}
pretty simple, but the stack flow from recursion has severe overhead, especially for large trees. You can change the display node portion to add to a sequential list, and add the necessary passed parameters to do so. But on large trees the overhead of process will be very high. If you notice most of the time is spent calling functions, so the cpu is spending 66% of its time doing nothing but calling code, only 33% processing a node. ouch.
If you have a design that must change from random access priority speed to sequential access priority speed, this is a great one-time tool to rebuild your list. If the list does not need to be ordered, then it doesn't matter what order you process left right and display operations. Circular linked lists are often random order, so I guess it doesn't matter, I highly dislike random order data because of the unpredictability factor. In my business "knowing" that a process will always take n milliseconds is more important than making it fast (though I try to do both in balanced form).
read this: http://en.wikipedia.org/wiki/Tree_search[^]
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
i have a problem in creating my user interface using Open GL and GLUI. most of the example using polygons and some other things. I want to use tree.I just want to know how to create the interface because my project will use L-System as the engine.
|
|
|
|
|
I have a single line rich text control.
I'd like to have the same behaviour that a regular text control has when it recv's focus: all the text is selected.
So when I get a focus event I select all the text. When I do this I notice that the selection disappears when I release the mouse button. Anyone seen anything like this before or know how to fix it?
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
The control probably does something in the WM_LBUTTONUP handler. How about subclassing the control, and prevent the richedit control from handling it (during these circumstances of course)?
--
Pictures[^] from my Japan trip.
|
|
|
|
|
Thanks that was sort of it.
It seems like something deep in the Richedit library resets the selection to nothing! And a EN_SELCHANGE is fired indicating this. What I can't figure out is why the richedit lib is doing this in first place. Is there some magic incantation I have to perform to get my selection parameters to stick?
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
Jim Crafton wrote: What I can't figure out is why the richedit lib is doing this in first place. Is there some magic incantation I have to perform to get my selection parameters to stick?
Aren't rich text controls supposed to remove selections if you click on it? I think that's the default behaviour of pretty much every editing component I've ever used in Windows. The reason it doesn't release the selection in WM_LBUTTONDOWN, is because it's possible to drag selected text around.
That's the theory anyway.
--
Pictures[^] from my Japan trip.
|
|
|
|
|
Well the MSDN docs seem to hint that this is not the case. But maybe they aren't quite right either. So I still need to hack around a bit. It does seem like I will have to *force* the rich edit to stay selected.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
Hello,
I'd like to retrieve the IP addresses of the host my application is running on. I need to know ALL the IP addresses associated which each network card(Wi-fi, Bluetooth...)
But I don't know which Windows API functions to use.
Can someone help?
Thanks,
Allad
----
Navigator - Your best alternative to Windows Explorer
|
|
|
|
|
use gethostbyname("localhost") and check the HOSTENT struct that's returned. Something like this:
struct in_addr addr;
hostent* host = gethostbyname( "localhost" );
if ( NULL != host ) {
memcpy( &(addr.s_addr), host->h_addr, host->h_length );
printf( "ip: %d.%d.%d.%d", addr.S_un.S_un_b.s_b1,
addr.S_un.S_un_b.s_b2, addr.S_un.S_un_b.s_b3, addr.S_un.S_un_b.s_b4 );
}
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
Thanks for replying.
But your code retrieves only one IP address. What about IP addresses associated to other network cards?
Sincerely,
Allad
----
Navigator - Your best alternative to Windows Explorer
|
|
|
|
|
Doh! My fault. Then I'm not sure. The function I sent you was the BSD style socket/net API. You need to look at the native Win32 APIs for that - I think what you want to look for is functions to enumeration network connections. Look up WSA, and functions that have Enum in their name.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
The best way to grab a list of all the ip addresses attached to your local system is using the IPHelper[^] library. You'll need to include the IPHlpApi.h and winsock2.h header files, then add iphlpapi.lib and ws2_32.lib to your list of import libraries.
MIB_IPADDRTABLE *pIPAddrTable = NULL;
DWORD dwSize = 0;
DWORD dwRetVal = 0;
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) != ERROR_INSUFFICIENT_BUFFER )
{
printf( "Error getting buffer size." );
}
else
{
pIPAddrTable = ( MIB_IPADDRTABLE * ) malloc ( dwSize );
if ( (dwRetVal = GetIpAddrTable( pIPAddrTable, & dwSize, 0 ) ) != NO_ERROR )
{
printf("GetIpAddrTable failed.\n");
}
for( int i = 0; i < pIPAddrTable->dwNumEntries; i ++ )
{
in_addr add;
in_addr subnet;
ZeroMemory( & add, sizeof( in_addr ) );
ZeroMemory( & subnet, sizeof( in_addr ) );
add.S_un.S_addr = pIPAddrTable->table[ i ].dwAddr;
subnet.S_un.S_addr = pIPAddrTable->table[i].dwMask;
printf("IP Address: %s\n", inet_ntoa( add ) );
printf("IP Mask: %s\n\n", inet_ntoa( subnet ) );
}
free( pIPAddrTable );
}
Gavin Taylor
w: http://www.gavspace.com
|
|
|
|
|
Thank you for your answer.
It is definitely what I was looking for.
Best regards,
Allad
----
Navigator - Your best alternative to Windows Explorer
|
|
|
|
|
|
When will these problems end? Today I tried the EM_SETTEXTEX message for a rich edit contol only to find that it's not defined in my richedit header file. I can't understand this, SETTEXTEX is available in version 2 of the control and even that is not defined :/
Does anybody have an up to date version of this file I could possibly borrow?
|
|
|
|
|
If you are working with VC 6.0 try a new version of the sdk.
When VC6.0 was released, there was no higher version of rtfedit.
You can download the windows sdk from microsoft homepage.
|
|
|
|
|
|
It has taken me 2 days to track down this problem so I aint very happy.
I have created a table within a rich edit control using the new dll version 4.1. For some reason none of the data within the cells was not being displayed. I tracked it down to the rtf \qc command which is supposed to center text. It works in Word and Wordpad, but it aint working in my app.
Strange thing is, when I first updated the control I had it working.
Does anybody know how to correctly center text within a table cell?
|
|
|
|
|
Hi there,
I've got data from the serial port stored in a CString variable,
e.g. 0123;0255;0192 with fixed size and the values are separeted with ';'
Now I need to splitt the values 0123 0255 and so on in other variables in order to make calculations.
My question: Is there an easy way to do this with the advadages of CString or do I need the way I would do in ordinary c-code: for (i=0 ...)
variable[i] = string [i] ... and so on?
|
|
|
|
|
If you are using Visual Studio 2002 or higher, then check out the CString::Tokenize method - you can use this to split the string into sub-strings, and then use _ttoi to convert the string to an int . For example:
CString str = _T("0123;0255;0192");
int nStartPos = 0;
CString strToken = str.Tokenize(_T(";"), nStartPos);
while (!strToken.IsEmpty())
{
int nVal = _ttoi(strToken);
TRACE(_T("Token value: %d\n"), nVal);
strToken = str.Tokenize(_T(";"), nStartPos);
}
HTH.
|
|
|
|
|
Dear Robert,
thanks for good idea. Unfortunately, I'm working under VC++ 6.0 and there is no Tokensize availible.
|
|
|
|
|
OK, well you could use the C strtok function instead, but it's messy (and you'd need to make a copy of the string first), e.g.:
CString str = "0123;0456;0789";
TCHAR* psz = new TCHAR [str.GetLength() + 1];
_tcscpy(psz, str);
TCHAR* pszTok = _tcstok(psz, _T(";"));
while (pszTok != NULL)
{
int nVal = _ttoi(pszTok);
...
pszTok = _tcstok(NULL, _T(";"));
}
delete [] psz;
|
|
|
|
|
I don't think strtok is thread-safe, so be warned!
|
|
|
|
|
Robert Edward Caldecott wrote: I don't think strtok is thread-safe, so be warned!
Is CString itself thread safe ?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
I'm being thick. You can obtain direct access to the CString buffer using CString::GetBuffer if that helps.
|
|
|
|