一个简单的链表程式

2008-02-23 05:05:02来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

******************************************************************************/
/* 作者: 神vlinux飘飘 */
/* bbs.bc-cn.net */
/* 时间:2005年1月13日 */
/* 版权没有,盗版不究 */
/******************************************************************************/

#include <stdio.h>

/*数据结构*/
struct card
{
char name[30];
char tel[30];
char zip[255];
struct card *front_point;
struct card *next_point;
};

struct card *head_point; /*头节点*/
struct card *end_point; /*尾节点*/
struct card *now_point; /*当前节点,很多操作都是围绕这个节点来完成*/

/*命令函数区*/
void uppoint(); /*当前节点上移一条记录*/
void downpoint(); /*当前节点下移一条记录*/
void save(); /*保存文档*/
void new(); /*在当前节点之后创建一个新的记录,并把当前节点指向新记录*/
void ver(); /*显示版本号,无聊....*/
void del(); /*删除当前节点的记录*/
void list(); /*显示任何的记录*/
void point(); /*显示当前节点所指向的记录*/
void quit(); /*退出程式(推荐选项)*/
void find(); /*查找记录,并且把节点指向找到的记录.有两种查找方式(按名字,按电话)*/
void cls(); /*清屏*/

/*功能函数区*/
void load(); /*装载文档*/
void commandline(); /*命令行,您任何的指令都由他来理解,执行*/
void show(struct card *); /*打印记录*/
void error(int ); /*错误系统,好象显得有点多余*/
void trade(struct card*,struct card*); /*交换两个记录在链表中的位置uppoint和downpoint用*/
struct card *search(char *,int); /*查找记录*/


void main()
{
ver();
load();
commandline();
}


void commandline()
{
char command[100];

printf("Card Master!\nWrite by vlinux\n");
for(;;)
{
printf("CMD:");
gets(command);

if( strcmp(command,"new")==0 ) new();
else if( strcmp(command,"del")==0 ) del();
else if( strcmp(command,"find")==0 ) find();
else if( strcmp(command,"list")==0 ) list();
else if( strcmp(command,"point")==0 ) point();
else if( strcmp(command,"quit")==0 ) quit();
else if( strcmp(command,"cls")==0 ) cls();
else if( strcmp(command,"ver")==0 ) ver();
else if( strcmp(command,"save")==0 ) save();
else if( strcmp(command,"uppoint")==0 ) uppoint();
else if( strcmp(command,"downpoint")==0)downpoint();
else error(0);
}
}


void show(struct card *show_point)
{
printf("\n_______________________________\n");
printf("NAME : %s\n",show_point->name);
printf("TEL : %s\n",show_point->tel);
printf("ZIP : %s",show_point->zip);
printf("\n_______________________________\n");
}


void list()
{
struct card *list_point;
int count=0;

if( head_point->next_point == end_point )
{
printf("This is an empty Card!\n");
return;
}

list_point=head_point->next_point;
for(;list_point->next_point!=NULL;list_point=list_point->next_point)
{
show(list_point);
count ;
}
printf("Total %d\n\n",count);
}

void point()
{
show(now_point);
}


void new()
{
struct card *new_point;

new_point=(struct card*)malloc(sizeof(struct card));

new_point->next_point=now_point->next_point;
new_point->front_point=now_point;
now_point->next_point=new_point;

now_point=new_point;

printf("Enter NAME:");
gets(new_point->name);

printf("Enter TEL:");
gets(new_point->tel);

printf("Enter ZIP:");
gets(new_point->zip);

printf("Creat a new card\n");
show(new_point);
printf("\n");
}


void find()
{
struct card *find_point;
char words[255];

printf("FIND....\n");
printf("Enter your search about? (name/tel) :");
gets(words);

if( strcmp(words,"name")== 0 )
{
printf("Enter NAME:");
gets(words);
find_point=search(words,0);
if( find_point==NULL )
{
error(1);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C#学习第一天

下一篇: 怎么学习asp 给非专业的asp爱好者