急,菜鸟求教。在线等解。感激。
小弟现在正在做c语言的数据结构的考试题目。搞不明白。
题目是下面这样的。
有没有人可以帮助我一下。
感谢感谢。
1.stack 求初始化函数 void initStack(STACK *stack)。这个函数每个变值stack型的结构体只有数据值,没有返还值。每个stack的成员,stackSize,bottom,top各各初识化为0和NULL.
2.stack 求列出 void printStack(STACK *stack)。每个变值输出STACK的结构体只有数据值,没有返还值。每个变值stack的bottom 从NODE开始 所有
NODE data输出。
3.求查询 bool isEmpty(STACK *stack)和bool isFull(STACK *stack)的stack 形态函数。这两个函数各个是否在满的情况下和空的情况下的值BOOL的真假。
4...说不清楚..
5...也说不清楚...
本题目,是韩国人出的.
我韩国语能力有限.是在翻译不出来.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 10
struct StackNode {
char *title;
char *singer;
struct StackNode *next;
};
typedef struct StackNode STACKNODE;
struct Stack {
int stackSize;
STACKNODE *top;
STACKNODE *bottom;
};
typedef struct Stack STACK;
void initStack(STACK *stack);
void printStack(STACK *stack);
bool isEmpty(STACK *stack);
bool isFull(STACK *stack);
void insertCD(STACK *stack);
void push(STACK *Sstack, STACKNODE *node);
void removeCD(STACK *stack);
void pop(STACK *stack, STACKNODE *removedNode);
void main()
{
STACK *stack
char cmd;
printf("******************* Choose Command!! *******************\n");
printf("+: push, -: pop, F: full check, E: empty check \n");
printf("Q: Quit\n");
printf("*********************************************************\n");
stack = (STACK *)malloc(sizeof(STACK));
initStack(stack);
do {
printf("Command:");
cmd - getch();
putch(cmd);
cmd = toupper(cmd);
switch (cmd)
{
case '+':
insertCD(stack);
break;
case '-':
removeCD(stack)
break;
case 'E':
if (isEmpty(stack)) printf ("Stack is empty!\n");
else printf ("Stack isn't full!\n");
break;
case 'F':
if (isFull(stack)) printf ("Stack is full!\n");
else printf ("Stack isn't full!\n");
break;
case 'Q':
break;
default :
printf ("\nWrong command! Retry!\n");
}
printStack(stack);
} while (cmd !='Q' );
}
void printStack(STACK *stack)
{
int nSerial=1;
STACKNODE *tempCursor, *cursor;
tempCursor = stack->bottom;
cursor = stack->top;
if (isEmpty(stack))
{
printf("Stack is empty!\n");
}
else
{
printf("CD list\n");
printf ("=============================================\n");
while(tempCursor != NULL)
{
printf("%d : %s (%s)\n",nSerial, tempCursor->title,tempCursor->singer);
tempCursor = tempCursor->next;
nSerial++;
}
printf("n");
}
}
void initStack(STACK *stack)
{
//要写的地方1
}
bool isEmpty(STACK *stack)
{
//要写的地方2
}
bool isFull(STACK *stack)
{
//要写的地方3
}
void inserCD(STACK *stack)
{
STACKNODE *tempNode;
tempNode = (STACKNODE *)malloc(sizeof(STACKNODE));
tempNode->next = NULL;
tempNode->title = (char *)malloc(sizeof(CHAR)*20);
tempNode->singer = (char *)malloc(sizeof(char)*20);
printf ("=========================================================\n");
printf ("CD Title : ");
gets(tempNode->title);
printf ("Singer : ");
gets(tempNode->singer);
printf ("\n");
printf ("=========================================================\n");
push(stack,tempNode);
}
void push(STACK *stack, STACKNODE *node)
{
//要写的地方4
}
void removeCD(STACK *stack)
{
STACKNODE *deletedNode;
deletedNode = (STACKNODE *)malloc(sizeof(STACKNODE));
deletedNode->next = NULL;
deletedNode->title = NULL;
deletedNode->singer = NULL;
pop(stack, deletedNode);
printf("\nRempved CD : %s (%s)\n",deletedNode->title,deletedNode->singer);
}
void pop(STACK *stack, STACKNODE *removedNode)
{
//要写的地方5
}
感谢帮助者。感谢爱莫能助者。
[[it] 本帖最后由 wjjjsy 于 2008-4-21 15:38 编辑 [/it]]
42120712353.zip
(1.37 KB)