ARRAY
printList(List *pL) {
(*pL)->next == NULL) {
printf("empty");
return;
sition p = (*pL)->next;
ile (p != NULL) {
printf("%.2f", p->element);
f (p->next != NULL) {
printf(", ");
}
p = p->next;
on previous(Position p, List *pL) {
sition q = *pL;
ile (q->next != p) {
q = q->next;
urn q;
on first(List *pL) {
n *pL;
entType retrieve(Position p, List *pL)
n p->next->element;
delete(Position p, List *pL){
on temp = p->next;
ext = temp->next;
emp);
}
Position locate(ElementType x, List *pL){
Position p = *pL;
while (p->next != NULL) {
if (p->next->element == x){break;}
p = p->next;
}
return p;
}
void insert(ElementType x, Position p, List
*pL) {
Position temp = p->next;
p->next = (Position)malloc(sizeof(Cell));
p->next->element = x;
p->next->next = temp;
}
Position makeNull (List *pL) {
*pL = (Position)malloc(sizeof(Cell));
(*pL)->next = NULL;
(*pL)->element = 13350;
return *pL;
}
Position end (List *pL) {
Position p = *pL;
while (p->next != NULL){p=p->next;}
return p;
}
Position next (Position p, List *pL){
return p->next;
}
LINKED LIST
void delete(Position p, List *pL){
Position temp = p->next;
p->next = temp->next;
free(temp);
}
void printList(List *pL) {
if ((*pL)->next == NULL) {
printf("empty");
return;
}
Position p = (*pL)->next;
while (p != NULL) {
printf("%.2f", p->element);
if (p->next != NULL) {
printf(", ");
}
p = p->next;
}
}
Position first(List *pL) {
return *pL;
}
Position next(Position p, List *pL){
return p->next;
}
void insert(ElementType x, Position p, List
*pL) {
Position temp = p->next;
p->next = (Position)malloc(sizeof(Cell));
p->next->element = x;
p->next->next = temp;
}
Position end (List *pL) {
on p = *pL;
(p->next != NULL){p=p->next;}
n p;
on previous(Position p, List *pL) {
sition q = *pL;
ile (q->next != p) {
q = q->next;
urn q;
on locate(ElementType x, List *pL){
on p = *pL;
(p->next != NULL) {
>next->element == x){break;}
->next;
n p;
on makeNull (List *pL) {
= (Position)malloc(sizeof(Cell));
->next = NULL;
->element = 15869;
n *pL;
entType retrieve(Position p, List *pL)
n p->next->element;
CK
push (ElementType x, Stack *pS) {
if(pS->top == 0){printf ("Error: stack is
full\n");}
else{
pS->top--;
pS->elements[pS->top]=x;
}
}
void makeNull (Stack *pS) {
pS->top = MAXLENGTH;
}
ElementType top (Stack *pS) {
if (pS->top == MAXLENGTH){
ElementType dummy;
return dummy=-91.08;
}
return pS->elements[pS->top];
}
void pop (Stack *pS) {
if (pS->top == MAXLENGTH){printf
("Error: stack is empty.\n");}
else{pS->top++;}
}
int empty (Stack *pS) {
return pS->top == MAXLENGTH;
}
QUEUE ARRAY
void makeNull (Queue *pQ){
pQ->front = -1;
pQ->rear = -1;
}
int empty (Queue *pQ) {
return pQ->front == -1;
}
ElementType front (Queue *pQ){
if (pQ->front == -1) {
ElementType dummy=99.99;
return dummy;
}
return pQ->elements[pQ->front];
}
void dequeue (Queue *pQ) {
if (pQ->front == -1) {
printf ("Error: Queue is empty,
cannot dequeue.\n");
}
if (pQ->front == pQ->rear){
pQ->front = -1;
pQ->rear = -1;;
return;
}
pQ->front = (pQ->front +
1)%MAXLENGTH;
}
void enqueue (ElementType x, Queue
*pQ) {
if ((pQ->rear+1)%MAXLENGTH == pQ-
>front){
printf("Error: Queue is full, cannot
enqueue.\n");
}
else{
pQ->rear = (pQ-
>rear+1)%MAXLENGTH;
->elements[pQ->rear] = x;
pQ->front == -1) pQ->front = 0;
UE POINTER
makeNull (Queue *pQ) {
on header = malloc(sizeof(Cell));
er->next = NULL;
front = header;
rear = header;
mpty (Queue *pQ) {
n (pQ->front == pQ->rear);
entType front (Queue *pQ) {
Q->front == pQ->rear) {
ElementType dummy=1;
return dummy;
n pQ->front->next->element;
dequeue (Queue *pQ) {
Q->front == pQ->rear){
ntf ("Error: Queue is empty, cannot
eue.\n");
sition temp = pQ->front;
->front = temp->next;
e (temp);
void enqueue (ElementType x, Queue
*pQ) {
pQ->rear->next = malloc(sizeof(Cell));
pQ->rear->next->element = x;
pQ->rear->next->next = NULL;
pQ->rear = pQ->rear->next;
}
//////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLENGTH 100
typedef int ElementType;
typedef int Position;
typedef struct {
ElementType elements[MAXLENGTH];
Position last;
} BigInteger;
//makeNull(pL): make pL be empty
Position makeNull(BigInteger *pL) {
pL->last = 0;
return pL->last + 1;
}
//end(pL): returns the position following
the last element
Position end(BigInteger *pL) {
return pL->last + 1;
}
//append(x, pL): insert x at the end of pL
void append(ElementType x, BigInteger
*pL) {
pL->elements[pL->last] = x;
pL->last++;
}
BigInteger mult7(BigInteger *pL) {
BigInteger temp;
makeNull(&temp);
int i;
int remainder = 0;
int c = 0;
for (i = 0; i<pL->last+1; i++) {
remainder = c/10;
c = 7*(pL->elements[i]) +
remainder;
append(c%10, &temp);
}
return temp;
}
void printBigInteger( BigInteger *pL) {
int i;
for (i=0; i<pL->last; i++)
printf("%d",pL-
>elements[i]);
}
int main() {
BigInteger a;
makeNull(&a);
char s[] =
"7588588969786786995659779";
int i;
for ( i = strlen(s) - 1; i >= 0; i--)
append(s[i] - '0', &a);
BigInteger b = mult7(&a);
printf("a = "); printBigInteger(&a);
printf("a * 7 = "); printBigInteger(&b);
return 0;

Preview text:

ARRAY } Position temp = p->next; printList(List *pL) { p->next = temp->next; (*pL)->next == NULL) {
Position locate(ElementType x, List *pL){ free(temp); printf("empty"); Position p = *pL; } return; while (p->next != NULL) {
if (p->next->element == x){break;} void printList(List *pL) { p = p->next; if ((*pL)->next == NULL) { sition p = (*pL)->next; } printf("empty"); ile (p != NULL) { return p; return; printf("%.2f", p->element); } } f (p->next != NULL) { Position p = (*pL)->next; printf(", ");
void insert(ElementType x, Position p, List while (p != NULL) { } *pL) {
printf("%.2f", p->element); p = p->next; Position temp = p->next; if (p->next != NULL) {
p->next = (Position)malloc(sizeof(Cell)); printf(", "); p->next->element = x; } p->next->next = temp; p = p->next;
on previous(Position p, List *pL) { } } sition q = *pL; } ile (q->next != p) { Position makeNull (List *pL) { q = q->next;
*pL = (Position)malloc(sizeof(Cell)); Position first(List *pL) { (*pL)->next = NULL; return *pL; urn q; (*pL)->element = 13350; } return *pL; }
Position next(Position p, List *pL){ on first(List *pL) { return p->next; n *pL; Position end (List *pL) { } Position p = *pL;
while (p->next != NULL){p=p->next;}
void insert(ElementType x, Position p, List
entType retrieve(Position p, List *pL) return p; *pL) { } Position temp = p->next; n p->next->element;
Position next (Position p, List *pL){
p->next = (Position)malloc(sizeof(Cell)); return p->next; p->next->element = x; } p->next->next = temp; delete(Position p, List *pL){ } on temp = p->next; LINKED LIST ext = temp->next;
void delete(Position p, List *pL){ Position end (List *pL) { emp); on p = *pL;
if(pS->top == 0){printf ("Error: stack is int empty (Queue *pQ) {
(p->next != NULL){p=p->next;} full\n");} return pQ->front == -1; n p; else{ } pS->top--; pS->elements[pS->top]=x; ElementType front (Queue *pQ){
on previous(Position p, List *pL) { } if (pQ->front == -1) { sition q = *pL; } ElementType dummy=99.99; ile (q->next != p) { return dummy; q = q->next; void makeNull (Stack *pS) { } pS->top = MAXLENGTH;
return pQ->elements[pQ->front]; urn q; } } ElementType top (Stack *pS) { void dequeue (Queue *pQ) {
on locate(ElementType x, List *pL){ if (pS->top == MAXLENGTH){ if (pQ->front == -1) { on p = *pL; ElementType dummy;
printf ("Error: Queue is empty, (p->next != NULL) { return dummy=-91.08; cannot dequeue.\n");
>next->element == x){break;} } } ->next;
return pS->elements[pS->top]; }
if (pQ->front == pQ->rear){ n p; pQ->front = -1; void pop (Stack *pS) { pQ->rear = -1;;
if (pS->top == MAXLENGTH){printf return; on makeNull (List *pL) { ("Error: stack is empty.\n");} }
= (Position)malloc(sizeof(Cell)); else{pS->top++;}
pQ->front = (pQ->front + ->next = NULL; } 1)%MAXLENGTH; ->element = 15869; } n *pL; int empty (Stack *pS) {
void enqueue (ElementType x, Queue
return pS->top == MAXLENGTH; *pQ) {
entType retrieve(Position p, List *pL) }
if ((pQ->rear+1)%MAXLENGTH == pQ- >front){ n p->next->element; QUEUE ARRAY
printf("Error: Queue is full, cannot void makeNull (Queue *pQ){ enqueue.\n"); pQ->front = -1; } CK pQ->rear = -1; else{
push (ElementType x, Stack *pS) { } pQ->rear = (pQ- >rear+1)%MAXLENGTH;
->elements[pQ->rear] = x; pL->last++;
pQ->front == -1) pQ->front = 0;
void enqueue (ElementType x, Queue } *pQ) {
pQ->rear->next = malloc(sizeof(Cell));
BigInteger mult7(BigInteger *pL) {
pQ->rear->next->element = x; BigInteger temp; UE POINTER
pQ->rear->next->next = NULL; makeNull(&temp); makeNull (Queue *pQ) {
pQ->rear = pQ->rear->next; int i;
on header = malloc(sizeof(Cell)); } int remainder = 0; er->next = NULL; ////////////////////// int c = 0; front = header; #include for (i = 0; ilast+1; i++) { rear = header; #include remainder = c/10; #include c = 7*(pL->elements[i]) + #define MAXLENGTH 100 remainder; mpty (Queue *pQ) { typedef int ElementType; append(c%10, &temp);
n (pQ->front == pQ->rear); typedef int Position; } typedef struct { return temp;
ElementType elements[MAXLENGTH]; } entType front (Queue *pQ) { Position last; } BigInteger;
void printBigInteger( BigInteger *pL) { Q->front == pQ->rear) { int i; ElementType dummy=1; for (i=0; ilast; i++) return dummy;
//makeNull(pL): make pL be empty printf("%d",pL-
Position makeNull(BigInteger *pL) { >elements[i]);
n pQ->front->next->element; pL->last = 0; } return pL->last + 1; } int main() { dequeue (Queue *pQ) { BigInteger a; Q->front == pQ->rear){
//end(pL): returns the position following makeNull(&a);
ntf ("Error: Queue is empty, cannot the last element char s[] = eue.\n"); Position end(BigInteger *pL) { "7588588969786786995659779"; return pL->last + 1; int i; }
for ( i = strlen(s) - 1; i >= 0; i--) sition temp = pQ->front; append(s[i] - '0', &a); ->front = temp->next;
//append(x, pL): insert x at the end of pL e (temp);
void append(ElementType x, BigInteger BigInteger b = mult7(&a); *pL) {
printf("a = "); printBigInteger(&a);
pL->elements[pL->last] = x;
printf("a * 7 = "); printBigInteger(&b); return 0;