• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:57
CEST 13:57
KST 20:57
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL22] Ro16 Preview: Holy Diver4[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9Serral wins HomeStory Cup 2915
Community News
Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down1StarCraft open world shooter announced at BlizzCon98Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10Official StarCraft website teases new content ahead of BlizzCon?179Stellar Fest TWO the Moon (Dec 16-20)9
StarCraft 2
General
Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down How do you feel about the StarCraft shooter announcement at BlizzCon 2026? Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool StarCraft open world shooter announced at BlizzCon Balance hotfix patch 5.0.16b (July 16)
Tourneys
RSL Revival: Season 6 - Qualifiers and Main Event RSL goes to London! 2026 Offline Finals Nov 21-22 SC2 AI Tournament 2026 Fall Sparkling Tuna Cup - Weekly Open Tournament KSL Week #92
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
Mutation # 543 Enhanced Defenses The PondCast: SC2 News & Results Mutation # 542 The Ascended Mutation # 541 Binary Choice
Brood War
General
Remastered crash fix suggestions ASL22 General Discussion Why Protoss Struggles on ASL (Ft. Shuttle, Tulbo) BGH Auto Balance -> http://bghmmr.eu/ Official StarCraft website teases new content ahead of BlizzCon?
Tourneys
KCM Race Survival 2026 Season 3 [ASL22] Ro16 Group D [Megathread] Daily Proleagues [ASL22] Ro16 Group C
Strategy
Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation Game Theory for Starcraft
Other Games
General Games
Nintendo Switch Thread Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread EVE Corporation Diablo IV
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Canadian Politics Mega-thread Post Your Watch! Russo-Ukrainian War Thread Artificial Intelligence Thread
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
[Manga] One Piece Movie Discussion! Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
Virtual Romance, Real-Life C…
TrAiDoS
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
LOCKPICKING NOOB
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 5763 users

The Big Programming Thread - Page 31

Forum Index > General Forum
Post a Reply
Prev 1 29 30 31 32 33 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Craton
Profile Blog Joined December 2009
United States17303 Posts
December 29 2010 21:32 GMT
#601
On December 30 2010 06:23 mmp wrote:
Show nested quote +
On December 30 2010 06:15 Craton wrote:
On December 30 2010 06:01 mmp wrote:
Craton, do you just want to pull out the first row after the ordering? It's a little unclear from what you've presented what your query is intending to do (I'm just a PHP amateur).


Right now I get something like:

item_id | item_name | misc. columns | Checked Out By
1 | C# Reference Book | < etc etc etc > | Joe Smith
1 | C# Reference Book | < etc etc etc > | Billy Bob


It's the same book, but it has been checked out (and back in) by Billy Bob and then checked out again by Joe Smith.

Actually now that I think about I probably just need a where clause about the check-in date being null. Of course I can't test that because someone broke the DB server again, but it should be sufficient.

You want the latest checkout, yes? Why don't you keep a key column that auto-increments the transaction number, so you can order by the last transaction? Or does your check-out date effectively do something like that?

Correct me if I'm misreading your intent.

The checkout date should do what I need. The checkout table holds the checkouts (or ins) for every item, as well. Seems unnecessary to add anything to the existing table structure.
twitch.tv/cratonz
mmp
Profile Blog Joined April 2009
United States2130 Posts
December 30 2010 03:04 GMT
#602
On December 30 2010 06:32 Craton wrote:
Show nested quote +
On December 30 2010 06:23 mmp wrote:
On December 30 2010 06:15 Craton wrote:
On December 30 2010 06:01 mmp wrote:
Craton, do you just want to pull out the first row after the ordering? It's a little unclear from what you've presented what your query is intending to do (I'm just a PHP amateur).


Right now I get something like:

item_id | item_name | misc. columns | Checked Out By
1 | C# Reference Book | < etc etc etc > | Joe Smith
1 | C# Reference Book | < etc etc etc > | Billy Bob


It's the same book, but it has been checked out (and back in) by Billy Bob and then checked out again by Joe Smith.

Actually now that I think about I probably just need a where clause about the check-in date being null. Of course I can't test that because someone broke the DB server again, but it should be sufficient.

You want the latest checkout, yes? Why don't you keep a key column that auto-increments the transaction number, so you can order by the last transaction? Or does your check-out date effectively do something like that?

Correct me if I'm misreading your intent.

The checkout date should do what I need. The checkout table holds the checkouts (or ins) for every item, as well. Seems unnecessary to add anything to the existing table structure.

So you're retrieving from one table and sorting it with another? Sounds doable but messy to hand code in your language of choice, but I'm going to dodge this since SQL is not my area of expertise. Maybe someone else can help produce a simple query.
I (λ (foo) (and (<3 foo) ( T_T foo) (RAGE foo) )) Starcraft
huameng
Profile Blog Joined April 2007
United States1133 Posts
Last Edited: 2010-12-30 07:36:46
December 30 2010 03:12 GMT
#603
On December 30 2010 06:26 Qzy wrote:
Anyone want to discuss Project euler problems? Not solutions, but rather discuss a problem in general. I'm level 2 euler, near question 60-80 I believe.


Which problems? I haven't done very many but I do lots of topcoder contests and almost went to world finals for ICPC this year, so I like wasting my time on these weird algorithms :D

Edit 1: Went ahead and did a few problems, almost to level 1 I think? Skipped ahead a lot though. 122 looks interesting and the solution isn't jumping out at me right now so I'm gonna work on it for a little bit.

http://projecteuler.net/index.php?section=problems&id=122 For those of you interested
skating
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2010-12-30 06:58:17
December 30 2010 06:54 GMT
#604
On December 30 2010 05:54 Craton wrote:
Is there way to select the 'top 1' of a particular category in a complex join?

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as responsible_party, itmstatref.item_status_ref_name as item_status_ref_name, 
itmtyperef.item_type_name as item_type_name, uac.lastName + ', ' + uac.firstName as checked_out_by
FROM ITEM itm INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
INNER JOIN ITEM_CHECKOUT itmcheckout on itm.item_id=itmcheckout.item_id
INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
ORDER BY itm.item_id, itm.item_inv_no


I basically only want to get the latest checkout of a given item, if existing, rather than a separate record for each time it was checked out (which is what I'm getting).

I feel like I'm missing something obvious.


It would help to see the table structure.

What might help you in this case is a subselect, something like this:
(This query is in no way related to your query and i didn't check the syntax)

SELECT item.item_id,
(
SELECT checkout.item_status
FROM checkout
WHERE checkout.item_id = item.item_id
ORDER BY checkout.date
LIMIT 1
)
FROM item
ORDER BY item.item_id


If you only want items that are not checked back in you can use EXISTS


SELECT item.item_id
FROM item
WHERE EXISTS(
SELECT 1 /* note: whatever you select here is ignored, only the WHERE counts */
FROM checkout
WHERE item.item_id=checkout.item_id
AND checkout.return_date IS NULL
)


http://dev.mysql.com/doc/refman/5.1/en/exists-and-not-exists-subqueries.html
http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

and

http://dev.mysql.com/doc/refman/5.1/en/optimizing-subqueries.html
http://dev.mysql.com/doc/refman/5.1/en/rewriting-subqueries.html

EDIT:

After looking at your query, it looks like Microsofts T-SQL. Shouldn't matter much though as it supports subqueries and EXISTS, too, AFAIR. There might be slight syntax differences, but i can't check atm.

You might also want to test performance with multiple small queries instead of a big join, as in some cases running even 20 small queries can be faster than 1 big query, especially since they are easier to optimize.
Craton
Profile Blog Joined December 2009
United States17303 Posts
Last Edited: 2010-12-30 19:49:45
December 30 2010 14:54 GMT
#605
Well, I think you're right about needing a subquery to do this. Simply looking for nulls ends up skipping all of the items that have been checked back in. I knew that seemed too easy.

I tried

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name,
uac.lastName + ', ' + uac.firstName as checked_out_by,
itmcheckout.item_checkout_dt, itmcheckout.item_checkin_dt

FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
INNER JOIN ITEM_CHECKOUT itmcheckout on itm.item_id=itmcheckout.item_id
INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE EXISTS
(
SELECT TOP 1 item_checkin_dt
FROM item_checkout
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt DESC
)
ORDER BY itm.item_id, itm.item_inv_no

but that doesn't seem to change anything, presumably because of the fact that the earlier joins already grabbed them.

If I change it to:

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name



FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id

WHERE EXISTS
(
SELECT TOP 1 item_checkin_dt
FROM item_checkout itmcheckout INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt desc
)
ORDER BY itm.item_id, itm.item_inv_no

then I go from 77 rows to 43 rows (which seems right), but then I don't seem to have access to the fields inside the nested query. This, ofc, still doesn't address the null problem.

Error:

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name,
itmcheckout.item_checkout_dt, itmcheckout.item_checkin_dt, uac.userUID

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "itmcheckout.item_checkout_dt" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "itmcheckout.item_checkin_dt" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "uac.userUID" could not be bound.

The last three fields are members of the subquery. There seems to be a scope issue, but I'm struggling to find the answer via Google.


Now, this works more closely to what I want, but still not quite there:


SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as responsible_party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name, (
SELECT TOP 1 item_checkout_id
FROM item_checkout itmcheckout INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt desc
) as item_checkout_id
FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
ORDER BY itm.item_id, itm.item_inv_no

http://codepad.org/GGe1QAqh

If I could get the item_checkout_dt and item_checkin_dt instead of just the item_checkout_id I'd be set.
twitch.tv/cratonz
Qzy
Profile Blog Joined July 2010
Denmark1121 Posts
Last Edited: 2010-12-31 06:15:59
December 31 2010 05:44 GMT
#606
On December 30 2010 12:12 huameng wrote:
Show nested quote +
On December 30 2010 06:26 Qzy wrote:
Anyone want to discuss Project euler problems? Not solutions, but rather discuss a problem in general. I'm level 2 euler, near question 60-80 I believe.


Which problems? I haven't done very many but I do lots of topcoder contests and almost went to world finals for ICPC this year, so I like wasting my time on these weird algorithms :D

Edit 1: Went ahead and did a few problems, almost to level 1 I think? Skipped ahead a lot though. 122 looks interesting and the solution isn't jumping out at me right now so I'm gonna work on it for a little bit.

http://projecteuler.net/index.php?section=problems&id=122 For those of you interested


Send me a message on skype, then we can throw each other messages there . I always like to do a problem once in a while. PM me for username.
TG Sambo... Intel classic! Life of lively to live to life of full life thx to shield battery
KaiserJohan
Profile Joined May 2010
Sweden1808 Posts
Last Edited: 2011-01-02 15:14:22
December 31 2010 13:41 GMT
#607
EDIT: nvm, past this is old and solved now.
England will fight to the last American
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
January 03 2011 13:56 GMT
#608
+ Show Spoiler +
#include<stdlib.h>
#include<stdio.h>

struct node* BuildOneTwoThree() {
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;

head = malloc(sizeof(struct node));
second = malloc(sizeof(struct node));
third = malloc(sizeof(struct node));

head->data = 1;
head->next = second;

second->data = 2;
second->next = third;

third->data = 3;
third->next = NULL;

return head;
}


im studying about linked lists right now. I found this example and tried compiling it but it won't.
"invalid application of 'sizeof' to incomplete type 'node' "
"invalid conversion from 'void*' to 'node*' "

i dont get it. is the example wrong or was it me? (probably the latter lol)
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
r4sc
Profile Joined April 2010
Germany22 Posts
January 03 2011 16:19 GMT
#609
On January 03 2011 22:56 icystorage wrote:
+ Show Spoiler +
#include<stdlib.h>
#include<stdio.h>

struct node* BuildOneTwoThree() {
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;

head = malloc(sizeof(struct node));
second = malloc(sizeof(struct node));
third = malloc(sizeof(struct node));

head->data = 1;
head->next = second;

second->data = 2;
second->next = third;

third->data = 3;
third->next = NULL;

return head;
}


im studying about linked lists right now. I found this example and tried compiling it but it won't.
"invalid application of 'sizeof' to incomplete type 'node' "
"invalid conversion from 'void*' to 'node*' "

i dont get it. is the example wrong or was it me? (probably the latter lol)


You have to include(or write) the definition of struct node before ever using it. Look around the example for code that includes struct and typedef.
Bigpet
Profile Joined July 2010
Germany533 Posts
January 03 2011 16:55 GMT
#610
On January 03 2011 22:56 icystorage wrote:
+ Show Spoiler +
#include<stdlib.h>
#include<stdio.h>

struct node* BuildOneTwoThree() {
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;

head = malloc(sizeof(struct node));
second = malloc(sizeof(struct node));
third = malloc(sizeof(struct node));

head->data = 1;
head->next = second;

second->data = 2;
second->next = third;

third->data = 3;
third->next = NULL;

return head;
}


im studying about linked lists right now. I found this example and tried compiling it but it won't.
"invalid application of 'sizeof' to incomplete type 'node' "
"invalid conversion from 'void*' to 'node*' "

i dont get it. is the example wrong or was it me? (probably the latter lol)


like r4sc said, define node.

this compiles fine:
+ Show Spoiler +

#include<stdlib.h>
#include<stdio.h>

struct node{
int data;
void *next;
};

struct node* BuildOneTwoThree() {
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;

head = malloc(sizeof(struct node));
second = malloc(sizeof(struct node));
third = malloc(sizeof(struct node));

head->data = 1;
head->next = second;

second->data = 2;
second->next = third;

third->data = 3;
third->next = NULL;

return head;
}

int main(int argc, char** argv){
BuildOneTwoThree();
}


you probably just need to include a node.h from somewhere
I'm NOT the caster with a similar nick
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
January 03 2011 17:00 GMT
#611
wow thanks for the replies, i understand now what was missing, thank you very very much.

why would i need node.h?

can i do

+ Show Spoiler +
struct node{
int data;
struct node* next;
};

?
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
Phunkapotamus
Profile Joined April 2010
United States496 Posts
Last Edited: 2011-01-03 21:58:54
January 03 2011 18:25 GMT
#612
icystorage:
You shouldn't need to include "Node.h" for a struct definition and for this to compile. Your latest snippet will work. However, if you wish to use the 'node' struct outside of the current file it would be better practice to move the definition elsewhere- such that you can use it in multiple places easier.

For c++ you don't need to put 'struct' every time you use your 'node'. If you're getting errors relating to how 'node' is used, then you may be compiling as c instead of c++. My snippet has a solution that works for both.

If I may, I would like to recommend that you work towards a better variable naming conventions. Taking your example, mixed with bigpet's, this is how we would like to see code in the game industry:

+ Show Spoiler +

typedef struct _IcyNode
{
int m_data;
_IcyNode* m_next;
} IcyNode;

IcyNode* BuildOneTwoThree()
{
const int icyNodeSize = sizeof(IcyNode);
IcyNode* oneNode = static_cast< IcyNode* >(malloc(icyNodeSize));
oneNode->m_data = 1;
IcyNode* twoNode = static_cast< IcyNode* >(malloc(icyNodeSize));
twoNode ->m_data = 2;
IcyNode* threeNode = static_cast< IcyNode* >(malloc(icyNodeSize));
threeNode ->m_data = 3;

oneNode->m_next = twoNode;
twoNode->m_next = threeNode;
threeNode->m_next = NULL;

return oneNode;
}

int main()
{
BuildOneTwoThree();
return 0;
}

"Do a barrel roll"
uNiGNoRe
Profile Blog Joined June 2007
Germany1115 Posts
Last Edited: 2011-01-03 23:18:22
January 03 2011 23:15 GMT
#613
On January 04 2011 03:25 Phunkapotamus wrote:
icystorage:
You shouldn't need to include "Node.h" for a struct definition and for this to compile. Your latest snippet will work. However, if you wish to use the 'node' struct outside of the current file it would be better practice to move the definition elsewhere- such that you can use it in multiple places easier.

For c++ you don't need to put 'struct' every time you use your 'node'. If you're getting errors relating to how 'node' is used, then you may be compiling as c instead of c++. My snippet has a solution that works for both.

If I may, I would like to recommend that you work towards a better variable naming conventions. Taking your example, mixed with bigpet's, this is how we would like to see code in the game industry:

+ Show Spoiler +

typedef struct _IcyNode
{
int m_data;
_IcyNode* m_next;
} IcyNode;

IcyNode* BuildOneTwoThree()
{
const int icyNodeSize = sizeof(IcyNode);
IcyNode* oneNode = static_cast< IcyNode* >(malloc(icyNodeSize));
oneNode->m_data = 1;
IcyNode* twoNode = static_cast< IcyNode* >(malloc(icyNodeSize));
twoNode ->m_data = 2;
IcyNode* threeNode = static_cast< IcyNode* >(malloc(icyNodeSize));
threeNode ->m_data = 3;

oneNode->m_next = twoNode;
twoNode->m_next = threeNode;
threeNode->m_next = NULL;

return oneNode;
}

int main()
{
BuildOneTwoThree();
return 0;
}


I have a question: why do you use
IcyNode* oneNode = static_cast< IcyNode* >(malloc(icyNodeSize));

instead of
IcyNode* oneNode = (IcyNode*)malloc(icyNodeSize);
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
January 04 2011 00:51 GMT
#614
On January 04 2011 03:25 Phunkapotamus wrote:
icystorage:
You shouldn't need to include "Node.h" for a struct definition and for this to compile. Your latest snippet will work. However, if you wish to use the 'node' struct outside of the current file it would be better practice to move the definition elsewhere- such that you can use it in multiple places easier.

For c++ you don't need to put 'struct' every time you use your 'node'. If you're getting errors relating to how 'node' is used, then you may be compiling as c instead of c++. My snippet has a solution that works for both.

If I may, I would like to recommend that you work towards a better variable naming conventions. Taking your example, mixed with bigpet's, this is how we would like to see code in the game industry:

+ Show Spoiler +

typedef struct _IcyNode
{
int m_data;
_IcyNode* m_next;
} IcyNode;

IcyNode* BuildOneTwoThree()
{
const int icyNodeSize = sizeof(IcyNode);
IcyNode* oneNode = static_cast< IcyNode* >(malloc(icyNodeSize));
oneNode->m_data = 1;
IcyNode* twoNode = static_cast< IcyNode* >(malloc(icyNodeSize));
twoNode ->m_data = 2;
IcyNode* threeNode = static_cast< IcyNode* >(malloc(icyNodeSize));
threeNode ->m_data = 3;

oneNode->m_next = twoNode;
twoNode->m_next = threeNode;
threeNode->m_next = NULL;

return oneNode;
}

int main()
{
BuildOneTwoThree();
return 0;
}



im using C and im still on the basics and still trying to understand how to make linked lists
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
Phunkapotamus
Profile Joined April 2010
United States496 Posts
Last Edited: 2011-01-04 01:25:12
January 04 2011 01:23 GMT
#615
icystorage:
You'll want to define the struct the way that I wrote then. It's easier than having to write "struct node" every time.

uNiGNoRe:
I only use c-style casts if I'm writing only c. In icy's case, since he's using c, and not c++ I shouldn't have used them- and instead just used (IcyNode*) as you showed. In c++ I would still use static_cast because:

1) c-style casting is equivalent to reinterpret_cast, which can create nasty bugs to hunt down.
2) static_cast will align the pointer to the class-type that you define. If IcyNode were a derived class, then any alignment will be maintained. Using a c-style cast in that situation would leave you to the mercy of your compiler to figure out what you wanted.
3) If the return-type for malloc happened to change, you'd be safe knowing that your casts are compile-time checked. Granted, malloc is something you can always count on. However, since you can't count on any other function's return type, it's a convention that should still be followed. There's no sense in writing static_cast for everything that returns "void*" except malloc.
4) c++ style casting should be used if you're writing c++, and c style casting should be used if you're writing c. It's nicer to read and clearly states your intent for your future self, and others.


"Do a barrel roll"
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
Last Edited: 2011-01-04 01:45:34
January 04 2011 01:37 GMT
#616
On January 04 2011 10:23 Phunkapotamus wrote:
icystorage:
You'll want to define the struct the way that I wrote then. It's easier than having to write "struct node" every time.

uNiGNoRe:
I only use c-style casts if I'm writing only c. In icy's case, since he's using c, and not c++ I shouldn't have used them- and instead just used (IcyNode*) as you showed. In c++ I would still use static_cast because:

1) c-style casting is equivalent to reinterpret_cast, which can create nasty bugs to hunt down.
2) static_cast will align the pointer to the class-type that you define. If IcyNode were a derived class, then any alignment will be maintained. Using a c-style cast in that situation would leave you to the mercy of your compiler to figure out what you wanted.
3) If the return-type for malloc happened to change, you'd be safe knowing that your casts are compile-time checked. Granted, malloc is something you can always count on. However, since you can't count on any other function's return type, it's a convention that should still be followed. There's no sense in writing static_cast for everything that returns "void*" except malloc.
4) c++ style casting should be used if you're writing c++, and c style casting should be used if you're writing c. It's nicer to read and clearly states your intent for your future self, and others.




i tried it and its better but i dont understand why

EDIT: okay so i added a new function and made it like how you made the list can you check if i did it correctly? the compilation was a succes

this determines the length of the list
+ Show Spoiler +
int Length(IcyNode* oneNode) {
IcyNode* current = oneNode;
int count = 0;

while (current != NULL) {
count++;
current = current->m_next;
}
return count;
}
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
hucskool
Profile Joined September 2010
United States25 Posts
January 04 2011 01:39 GMT
#617
On December 30 2010 23:54 Craton wrote:
Well, I think you're right about needing a subquery to do this. Simply looking for nulls ends up skipping all of the items that have been checked back in. I knew that seemed too easy.

I tried

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name,
uac.lastName + ', ' + uac.firstName as checked_out_by,
itmcheckout.item_checkout_dt, itmcheckout.item_checkin_dt

FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
INNER JOIN ITEM_CHECKOUT itmcheckout on itm.item_id=itmcheckout.item_id
INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE EXISTS
(
SELECT TOP 1 item_checkin_dt
FROM item_checkout
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt DESC
)
ORDER BY itm.item_id, itm.item_inv_no

but that doesn't seem to change anything, presumably because of the fact that the earlier joins already grabbed them.

If I change it to:

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name



FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id

WHERE EXISTS
(
SELECT TOP 1 item_checkin_dt
FROM item_checkout itmcheckout INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt desc
)
ORDER BY itm.item_id, itm.item_inv_no

then I go from 77 rows to 43 rows (which seems right), but then I don't seem to have access to the fields inside the nested query. This, ofc, still doesn't address the null problem.

Error:

SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as Responsible_Party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name,
itmcheckout.item_checkout_dt, itmcheckout.item_checkin_dt, uac.userUID

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "itmcheckout.item_checkout_dt" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "itmcheckout.item_checkin_dt" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "uac.userUID" could not be bound.

The last three fields are members of the subquery. There seems to be a scope issue, but I'm struggling to find the answer via Google.


Now, this works more closely to what I want, but still not quite there:


SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as responsible_party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name, (
SELECT TOP 1 item_checkout_id
FROM item_checkout itmcheckout INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE itmcheckout.item_id=itm.item_id
ORDER BY item_checkin_dt desc
) as item_checkout_id
FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
ORDER BY itm.item_id, itm.item_inv_no

http://codepad.org/GGe1QAqh

If I could get the item_checkout_dt and item_checkin_dt instead of just the item_checkout_id I'd be set.


If you are still having issues with this and you are using MS SQL Server 05 (or higher), you could probably do this with a OUTER APPLY. I'm not sure what your schema looks like and I don't have anything here at home to check the syntax with but something like this would let you access the itmcheckout record for the given item id.


SELECT DISTINCT itm.*, ua.lastName + ', ' + ua.firstName as responsible_party,
itmstatref.item_status_ref_name as item_status_ref_name,
itmtyperef.item_type_name as item_type_name,
FROM ITEM itm
INNER JOIN USERACCOUNTS ua ON ua.userUID=itm.userUID
INNER JOIN ITEM_STATUS itmstat ON itm.item_id=itmstat.item_id
INNER JOIN ITEM_STATUS_REF itmstatref ON itmstat.item_status_ref_id=itmstatref.item_status_ref_id
INNER JOIN ITEM_TYPE_REF itmtyperef ON itm.item_type_id=itmtyperef.item_type_id
OUTER APPLY
(
SELECT ISNULL(MAX(itmcheckout.item_checkin_dt), 'somevalueyouwantifthereisnocheckin')
FROM item_checkout itmcheckout INNER JOIN USERACCOUNTS uac on itmcheckout.userUID=uac.userUID
WHERE itmcheckout.item_id=itm.item_id
GROUP BY itmcheckout.item_checkin_dt
) as item_checkout
ORDER BY itm.item_id, itm.item_inv_no


Again, I'm not sure if this will get you exactly what you want but playing around with OUTER APPLY (or possibly CROSS APPLY) might end up giving you the answer.
Inter arma enim silent leges...
Phunkapotamus
Profile Joined April 2010
United States496 Posts
January 04 2011 02:06 GMT
#618
On January 04 2011 10:37 icystorage wrote:
i tried it and its better but i dont understand why


Don't worry about understanding it for now. There's so much syntax to learn that it will just come in time. For now just be happy that you don't have to write as much :D If you want to understand though:

+ Show Spoiler +

Basically, typedefs take the left term, and make it the right term. They do this at compile-time and not run-time. Example:
typedef int IcyInt;

Imagine that wherever you see "IcyInt", "int" is instead cut and pasted. Therefore you can write:
IcyInt x = 1;   
int y = 4;
int z = x + y; // z is 5 because both x and y are of type "int"
IcyInt test = z + z + x; // test is 11

You can extend this to whole terms:
// this is what it does: typedef LEFT RIGHT
// here's with an int:
typedef int IcyInt;
// here's a chain of it
typedef IcyInt AnotherIcyIntIsAlsoStillAnInt;
AnotherIcyIntIsAlsoStillAnInt x = 1; // this is still an int :)

// you can do it with structs too
struct IcyNode { int m_data; }; // define your struct. this is the struct definition
typedef struct IcyNode ThisIsAnIcyNode; // create a typedef for it. this is the typedef definition
ThisIsAnIcyNode testNode;
testNode.m_Data = 13;

// the way I wrote combines the above struct and typedef definition. you can do any way. this is less writing :)
struct IcyNode { int m_data; } ThisIsAnIcyNode;



Therefore, from my previous post, you can see the struct is actually called "_IcyNode", and you've "typedef-ed" and used it as "IcyNode".
http://en.wikipedia.org/wiki/Typedef


On January 04 2011 10:37 icystorage wrote:

EDIT: okay so i added a new function and made it like how you made the list can you check if i did it correctly? the compilation was a succes

this determines the length of the list
+ Show Spoiler +
int Length(IcyNode* oneNode) {
IcyNode* current = oneNode;
int count = 0;

while (current != NULL) {
count++;
current = current->m_next;
}
return count;
}


Yep! that works!
"Do a barrel roll"
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
January 04 2011 02:33 GMT
#619
On January 04 2011 11:06 Phunkapotamus wrote:
Show nested quote +
On January 04 2011 10:37 icystorage wrote:
i tried it and its better but i dont understand why


Don't worry about understanding it for now. There's so much syntax to learn that it will just come in time. For now just be happy that you don't have to write as much :D If you want to understand though:

+ Show Spoiler +

Basically, typedefs take the left term, and make it the right term. They do this at compile-time and not run-time. Example:
typedef int IcyInt;

Imagine that wherever you see "IcyInt", "int" is instead cut and pasted. Therefore you can write:
IcyInt x = 1;   
int y = 4;
int z = x + y; // z is 5 because both x and y are of type "int"
IcyInt test = z + z + x; // test is 11

You can extend this to whole terms:
// this is what it does: typedef LEFT RIGHT
// here's with an int:
typedef int IcyInt;
// here's a chain of it
typedef IcyInt AnotherIcyIntIsAlsoStillAnInt;
AnotherIcyIntIsAlsoStillAnInt x = 1; // this is still an int

// you can do it with structs too
struct IcyNode { int m_data; }; // define your struct. this is the struct definition
typedef struct IcyNode ThisIsAnIcyNode; // create a typedef for it. this is the typedef definition
ThisIsAnIcyNode testNode;
testNode.m_Data = 13;

// the way I wrote combines the above struct and typedef definition. you can do any way. this is less writing
struct IcyNode { int m_data; } ThisIsAnIcyNode;



Therefore, from my previous post, you can see the struct is actually called "_IcyNode", and you've "typedef-ed" and used it as "IcyNode".
http://en.wikipedia.org/wiki/Typedef


Show nested quote +
On January 04 2011 10:37 icystorage wrote:

EDIT: okay so i added a new function and made it like how you made the list can you check if i did it correctly? the compilation was a succes

this determines the length of the list
+ Show Spoiler +
int Length(IcyNode* oneNode) {
IcyNode* current = oneNode;
int count = 0;

while (current != NULL) {
count++;
current = current->m_next;
}
return count;
}


Yep! that works!


thank you so much for the time in explaining typedef, i have read it and it helps me in understanding more thank you
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
SilverSkyLark
Profile Blog Joined April 2008
Philippines8437 Posts
Last Edited: 2011-01-04 03:23:56
January 04 2011 03:13 GMT
#620
Minor question: What sorting algorithm would you generally use and why? So far I've got the following:
- Shell sort: I don't personally like this since you'll still sort it when you get to h = 1.
- Heap sort: Pretty ok imo, but rearranging the heap sounds a bit complicated and space consuming.
- Quick sort: Pretty ingenious, but might take time if the pivot/bound values aren't picked properly.
- Radix sort: Pretty cool, it's like the way we were asked to sort things alphabetically during grade school. The only problem I have is implementing it on code.

I need it for my C++ algo class, so far I think I understood the essence of the sorting algorithms to a good degree. What would you guys personally prefer and why? I just need opinions/inputs. Thanks.
"If i lost an arm, I would play w3." -IntoTheWow || "Member of Hyuk Hyuk Hyuk cafe. He's the next Jaedong, baby!"
Prev 1 29 30 31 32 33 1032 Next
Please log in or register to reply.
Live Events Refresh
Kung Fu Cup
11:00
2026 Week 23
IntoTheiNu 802
RotterdaM237
WardiTV237
Rex87
SteadfastSC45
TKL 4
LiquipediaDiscussion
KCM Race Survival
10:00
Season 3 Finals
Kim Chul Min (afreeca) 1708
Liquipedia
The PondCast
10:00
Episode 109
CranKy Ducklings51
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko328
RotterdaM 237
ByuN 201
ProTech123
Rex 87
SteadfastSC 45
TKL 4
StarCraft: Brood War
Bisu 3014
Shuttle 1287
EffOrt 739
firebathero 735
actioN 728
Horang2 662
Soulkey 558
Soma 423
Snow 416
Mini 408
[ Show more ]
Stork 185
Light 176
Last 132
hero 124
Zeus 112
Larva 101
Killer 95
ZerO 94
Pusan 94
Rush 83
910 74
Hm[arnc] 63
Sea.KH 49
Barracks 44
ToSsGirL 36
Terrorterran 26
Shine 25
Trap 25
Sharp 23
soO 23
sSak 22
Noble 17
Sexy 13
HiyA 12
scan(afreeca) 8
sorry 7
Britney 0
Dota 2
Dendi663
Counter-Strike
byalli1721
olofmeister1606
edward92
Super Smash Bros
Mew2King63
Other Games
singsing2079
B2W.Neo569
Sick171
ZerO(Twitch)12
DeMusliM11
hiko4
Organizations
Other Games
gamesdonequick803
BasetradeTV67
[ Show 13 non-featured ]
StarCraft 2
• StrangeGG 47
• CranKy Ducklings SOOP15
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos2379
• TFBlade364
Other Games
• WagamamaTV188
Upcoming Events
Replay Cast
12h 3m
IntoTheTV X SOOP
23h 3m
Cure vs SHIN
herO vs Solar
Percival vs Classic
ByuN vs Rogue
OSC
1d 10h
Replay Cast
1d 12h
IntoTheTV X SOOP
1d 23h
Replay Cast
2 days
GSL
2 days
Replay Cast
3 days
GSL
3 days
Shopify Rebellion Sundays
4 days
Spirit vs Mixu
[ Show More ]
Replay Cast
4 days
Afreeca Starleague
4 days
Shine vs Rush
WardiTV Weekly
4 days
Monday Night Weeklies
5 days
Sparkling Tuna Cup
5 days
Afreeca Starleague
5 days
Light vs EffOrt
PiGosaur Cup
6 days
Kung Fu Cup
6 days
Liquipedia Results

Completed

Acropolis #5 - TRS
Blizzard Classic Cup 2026
Big Dog Cup 2026 Div 1

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
ASL Season 22
Super Anchor Qualifying S3
CSL 2026 AUTUMN (S22)
Acropolis #5
Calamity Invitational
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSA
Acropolis #5 - GSB
Acropolis #5 - GSC
SC4ALL II: Brood War
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
Copium Cup
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.