帮忙数据结构课程设计代码(C语言)

建通讯录
要求:第一个模块--主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块--Menu()的功能是:显示英文提示选单。
第三个模块--Quit()的功能是:退出选单。
第四个模块--Create()的功能是:创建新的通讯录。
第五个模块--Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
第六个模块--Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块--Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块--Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块--List()的功能是:显示通讯录中的所有记录。

满意的话再加100分!
是课程设计,代码量当然不能太小啦,这不是一般的作业啊~就算不是原作只要给我复制过来也可以,满意照样给分

第1个回答  2008-05-07
#include <stdio.h>
#include <stdlib.h>

struct node /*结点的数据结构*/
{
int a;
} ;

struct Stack /*栈的结构*/
{
struct node *A;
int tos;
int size;
};

init(struct Stack *S,int size) /*栈的初始化*/
{
S->A=(struct node *)malloc(sizeof(struct node)*size);
if(S->A==NULL){printf("out of space");getch();exit(1);}
S->tos=-1;
S->size=size;
}

push(struct Stack *S ,struct node e) /*入栈*/
{
if(S->tos==S->size-1){printf("full");getch();return;}
S->tos++;
S->A[S->tos].a=e.a;
}

pop(struct Stack *S) /*出栈*/
{
if(S->tos==-1){printf("empty stack");getch();return;}
S->tos--;
}

getTop(struct Stack *S) /*将栈的顶结点的值打印出来*/
{
if(S->tos==-1){printf("empty stack");getch();return;}
printf("%d",S->A[S->tos].a);
getch();
}

destroy(struct Stack *S) /*销毁栈*/
{
free(S);
}

main()
{
struct Stack S;
char order;
init(&S,5);

while(1) /*菜单*/
{
loop:
clrscr();
printf("1.push\n"
"2.pop\n"
"3.getTop\n"
"4.quit\n"
);
order=getchar();
switch(order)
{
case '1':mpush(&S);break;
case '2':mpop(&S);break;
case '3':mgetTop(&S);break;
case '4':quit(&S);break;
default :goto loop;
}
}
}

mpush(struct Stack *S) /*调用入栈*/
{
struct node e;
printf("input a integer:");
scanf("%d",&e.a);
push(S,e);
}

mpop(struct Stack *S) /*调用出栈*/
{
pop(S);
}

mgetTop(struct Stack *S) /*调用打印栈顶*/
{
getTop(S);
}

quit(struct Stack *S) /*退出,调用销毁*/
{
destroy(S);
exit(0);
}