一个简单的链表程式
2008-02-23 05:05:02来源:互联网 阅读 ()
/* 作者: 神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爱好者
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash