Replace invalid characters with HTML entities
— with — ’ with ’ + with + × with x ç with ç “ with “ ” with ” ‘ with ‘ • with • – with - µ with µ † with † Fix C++ θ with θ Yen symbol instead of times Fix broken apos Bullet again E-circumflex
This commit is contained in:
parent
9e52de9586
commit
500e7f5654
353 changed files with 5091 additions and 5091 deletions
52
15-04.html
52
15-04.html
|
|
@ -49,7 +49,7 @@ SENTINEL equ 32767 ;largest possible Value field
|
|||
LinkNode struc
|
||||
NextNode dw ?
|
||||
Value dw ?
|
||||
Text db MAX_TEXT_LENGTH+1 dup(?)
|
||||
Text db MAX_TEXT_LENGTH+1 dup(?)
|
||||
;*** Any number of additional data fields may by present ***
|
||||
LinkNode ends
|
||||
|
||||
|
|
@ -103,74 +103,74 @@ _InsertNodeSorted endp
|
|||
<P><B>LISTING 15.8 L15-8.C</B></P>
|
||||
<!-- CODE //-->
|
||||
<PRE>
|
||||
/* Sample linked list program. Tested with Borland C++. */
|
||||
/* Sample linked list program. Tested with Borland C++. */
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include “llist.h”
|
||||
#include “llist.h”
|
||||
|
||||
void main()
|
||||
{ int Done = 0, Char, TempValue;
|
||||
struct LinkNode *TempPtr, *ListPtr, *TempPtr2;
|
||||
char TempBuffer[MAX_TEXT_LENGTH+3];
|
||||
char TempBuffer[MAX_TEXT_LENGTH+3];
|
||||
|
||||
if ((ListPtr = InitLinkedList()) == NULL) {
|
||||
printf(“Out of memory\n”);
|
||||
printf(“Out of memory\n”);
|
||||
exit(1);
|
||||
}
|
||||
while (!Done) {
|
||||
printf(“\nA=add; D=delete; F=find; L=list all; Q=quit\n>”);
|
||||
printf(“\nA=add; D=delete; F=find; L=list all; Q=quit\n>”);
|
||||
Char = toupper(getche());
|
||||
printf(“\n”);
|
||||
printf(“\n”);
|
||||
switch (Char) {
|
||||
case 'A': /* add a node */
|
||||
if ((TempPtr = malloc(sizeof(struct LinkNode))) == NULL)
|
||||
{
|
||||
printf(“Out of memory\n );
|
||||
printf(“Out of memory\n );
|
||||
exit(1);
|
||||
}
|
||||
printf(“Node value: ”);
|
||||
scanf(“%d”, &TempPtr->Value);
|
||||
printf(“Node value: ”);
|
||||
scanf(“%d”, &TempPtr->Value);
|
||||
if ((FindNodeBeforeValue(ListPtr,TempPtr->Value))!=NULL)
|
||||
{ printf(“*** value already in list; try again ***\n”);
|
||||
{ printf(“*** value already in list; try again ***\n”);
|
||||
free(TempPtr);
|
||||
} else {printf(“Node text: ”);
|
||||
} else {printf(“Node text: ”);
|
||||
TempBuffer[0] = MAX_TEXT_LENGTH;
|
||||
cgets(TempBuffer);
|
||||
strcpy(TempPtr->Text, &TempBuffer[2]);
|
||||
InsertNodeSorted(ListPtr, TempPtr);
|
||||
printf(“\n”);
|
||||
printf(“\n”);
|
||||
}
|
||||
break;
|
||||
case 'D': /* delete a node */
|
||||
printf(“Value field of node to delete: ”);
|
||||
scanf(“%d”, &TempValue);
|
||||
printf(“Value field of node to delete: ”);
|
||||
scanf(“%d”, &TempValue);
|
||||
if ((TempPtr = FindNodeBeforeValue(ListPtr, TempValue))
|
||||
!= NULL) {
|
||||
TempPtr2 = TempPtr->NextNode; /* -> node to delete */
|
||||
DeleteNodeAfter(TempPtr); /* delete it */
|
||||
free(TempPtr2); /* free its memory */
|
||||
} else {
|
||||
printf(“*** no such value field in list ***\n”)
|
||||
printf(“*** no such value field in list ***\n”)
|
||||
break;
|
||||
case 'F': /* find a node */
|
||||
printf(“Value field of node to find: ”);
|
||||
scanf(“%d”, &TempValue);
|
||||
printf(“Value field of node to find: ”);
|
||||
scanf(“%d”, &TempValue);
|
||||
if ((TempPtr = FindNodeBeforeValue(ListPtr, TempValue))
|
||||
!= NULL)
|
||||
printf(“Value: %d\nText: %s\n”,
|
||||
printf(“Value: %d\nText: %s\n”,
|
||||
TempPtr->NextNode->Value, TempPtr->NextNode->Text);
|
||||
else
|
||||
printf(“*** no such value field in list ***\n”);
|
||||
printf(“*** no such value field in list ***\n”);
|
||||
break;
|
||||
case 'L': /* list all nodes */
|
||||
TempPtr = ListPtr->NextNode; /* point to first node */
|
||||
if (TempPtr == ListPtr) { /* empty if at sentinel */
|
||||
printf(“*** List is empty ***\n”);
|
||||
printf(“*** List is empty ***\n”);
|
||||
} else {
|
||||
do {printf(“Value: %d\n Text: %s\n”, TempPtr->Value,
|
||||
do {printf(“Value: %d\n Text: %s\n”, TempPtr->Value,
|
||||
TempPtr->Text);
|
||||
TempPtr = TempPtr->NextNode;
|
||||
} while (TempPtr != ListPtr);
|
||||
|
|
@ -187,10 +187,10 @@ void main()
|
|||
</PRE>
|
||||
<!-- END CODE //-->
|
||||
<H3><A NAME="Heading6"></A><FONT COLOR="#000077">Hi/Lo in 24 Bytes</FONT></H3>
|
||||
<P>In one of my <I>PC TECHNIQUES</I> “Pushing the Envelope” columns, I passed along one of David Stafford’s fiendish programming puzzles: Write a C-callable function to find the greatest or smallest unsigned <B>int</B>. Not a big deal—except that David had <I>already</I> done it in 24 bytes, so the challenge was to do it in 24 bytes or less.</P>
|
||||
<P>Such routines soon began coming at me from all angles. However (and I hate to say this because some of my correspondents were <I>very</I> pleased with the thought that they had bested David), no one has yet met the challenge—because most of you folks missed a key point. When David said, “Write a function to find the greatest or smallest unsigned <B>int</B> in 24 bytes or less,” he meant, “Write the <B>hi</B> and the <B>lo</B> functions in 24 bytes or less—<I>combined</I>.”</P>
|
||||
<P>In one of my <I>PC TECHNIQUES</I> “Pushing the Envelope” columns, I passed along one of David Stafford’s fiendish programming puzzles: Write a C-callable function to find the greatest or smallest unsigned <B>int</B>. Not a big deal—except that David had <I>already</I> done it in 24 bytes, so the challenge was to do it in 24 bytes or less.</P>
|
||||
<P>Such routines soon began coming at me from all angles. However (and I hate to say this because some of my correspondents were <I>very</I> pleased with the thought that they had bested David), no one has yet met the challenge—because most of you folks missed a key point. When David said, “Write a function to find the greatest or smallest unsigned <B>int</B> in 24 bytes or less,” he meant, “Write the <B>hi</B> and the <B>lo</B> functions in 24 bytes or less—<I>combined</I>.”</P>
|
||||
<P>Oh.</P>
|
||||
<P>Yes, a 24-byte hi/lo function is possible, anatomically improbable as it might seem. Which I guess goes to show that when one of David’s puzzles seems less than impossible, odds are you’re missing something. Listing 15.9 is David’s 24-byte solution, from which a lot may be learned if one reads closely enough.</P>
|
||||
<P>Yes, a 24-byte hi/lo function is possible, anatomically improbable as it might seem. Which I guess goes to show that when one of David’s puzzles seems less than impossible, odds are you’re missing something. Listing 15.9 is David’s 24-byte solution, from which a lot may be learned if one reads closely enough.</P>
|
||||
<P><B>LISTING 15.9 L15-9.ASM</B></P>
|
||||
<!-- CODE //-->
|
||||
<PRE>
|
||||
|
|
@ -223,7 +223,7 @@ around: ja save
|
|||
ret
|
||||
</PRE>
|
||||
<!-- END CODE //-->
|
||||
<P>Before I end this chapter, let me say that I get a lot of feedback from my readers, and it’s much appreciated. Keep those cards, letters, and email messages coming. And if any of you know Jeannie Schweigert, have her drop me a line and let me know how she’s doing these days....
|
||||
<P>Before I end this chapter, let me say that I get a lot of feedback from my readers, and it’s much appreciated. Keep those cards, letters, and email messages coming. And if any of you know Jeannie Schweigert, have her drop me a line and let me know how she’s doing these days....
|
||||
</P><P><BR></P>
|
||||
<CENTER>
|
||||
<TABLE BORDER>
|
||||
|
|
|
|||
Loading…
Reference in a new issue