当前位置:首页 » 编程语言 » 牙签c语言

牙签c语言

发布时间: 2023-03-16 06:29:16

‘壹’ c语言用链表实现逆序输出

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

//定义链表节点
typedefstructLNode
{intdata;
structLNode*next;
}LNode,*Linklist;

//创建链表
Linklistcreate()
{inti,n;//i用于下面循环,n用来存放有效节点的字数
Linklistp,L;
printf("PleaseinputN=");
scanf("%d",&n);
L=(Linklist)malloc(sizeof(LNode));//分配一个不存放有效数据的头结点
L->next=NULL;
for(i=0;i<n;i++)
{p=(Linklist)malloc(sizeof(LNode));//生成新节点
scanf("%d",&p->data);//输入元素值
p->next=L->next;
L->next=p;
}
returnL;//返回头节点;
}
//链表反转输出
LinklistReverseList(LinklistL,intst)//st为1时输出结点数据
{if(L->next!=NULL)
ReverseList(L->next,1);
if(st)printf("%d",L->data);
returnL;
}

voidput(LinklistL)
{Linklistp;
p=L->next;
while(p!=NULL)
{printf("%d",p->data);
p=p->next;
}
printf(" ");
}

intmain()
{LinklistL;
L=create();
printf("A:");put(L);
printf("B:");
ReverseList(L,0);//附加结点未保存数据,故第二参数为0
return0;
}

‘贰’ 求图书馆管理系统程序(c语言)

C程序项目-图书管理系统收藏
#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"
/*图书相关信息*/struct bookinf //定义图书相关信息结构体{ int num; char bname[20]; char wname[10]; char clanum[14]; char pubcom[10]; char pubtime[10]; float price;};
structmanage //定义管理员相关信息结构体{ char manage_name[10]; char password[10];};
/*首页*/void index() //首页打印设置{ char input; printf("\n\n\t\t\t*****************************\n"); printf("\t\t\t Paladin图书信息查询管理系统\n"); printf("\t\t\t*****************************\n\n\n"); printf("------------------------------------------------------------------------------\n"); printf("\n\t\t\t书山有路勤为径\n"); printf("\t\t\t\t 学海无涯苦作舟\n"); printf("\n\n\t 总策划:吴昊\n\n"); printf("\t 程式设计:肖书明樊启恒芦丹覃枝霞况轩 (排名不分先后)\n\n"); printf("\t 联系方式:QQ:6828000 or Mail To:[email protected]\n"); printf("\t________________________________________________________________\n"); printf("\t\tCopyrights @ Accp SIT25 Leo Workgroup 2004.8\n"); printf("\t\t\t All RightsReserved\n"); printf("\t\t\t\tVer 1.03\n"); printf("\t<按任意键进入>\n\t"); input=getchar(); //让用户输入一个字符后再进行下一步(以后在本程序中用得很多) system("cls"); //清屏}
/*登陆方式*/ void login(){ void tra_view(); //声明包含的函数 void adm_view(); void byebye(); void about(); void coloregg();
int input; char input_1; do //循环显示登陆选项(当输入的数不为选项数的时候重复循环) { system("cls"); printf("\n\n\n\t1.以游客身份进入\n"); printf("\t2.以管理员身份进入\n"); printf("\t3.关于本系统\n"); printf("\t4.退出本系统\n\n\n"); printf("\t请选择服务类别:"); scanf("%d",&input); if(input!=1&&input!=2&&input!=3&&input!=4&&input!=99) //输入数不等于选项的时候打印画面 { printf("\n\t输入出错!请重新选择~\n"); printf("\n\t按任意键返回选择页面~\n\t"); input_1=getchar(); input_1=getchar(); system("cls"); } if (input==4) { byebye(); //如果输入数为4,则执行byebye()函数 } } while (input!=1&&input!=2&&input!=3&&input!=4&&input!=99);
switch(input) //分支选择 { case 1:tra_view(); break; //选1执行游客进入方式 case 2:adm_view(); break; //选2执行管理员进入方式 case 3:about(); break; //选3执行关于界面函数 case 99:coloregg(); break; //选99执行彩蛋函数 }}/*关于界面*/void about(){ void login(); char input; //关于界面的打印设置 system("cls"); printf("\n\n\t\t\t\t欢迎使用帮助\n"); printf("\t_______________________________________________________________"); printf("\n\t1.本系统采用模块化设计\n"); printf("\t每一项功能由单独的函数块控制,一个功能块有错不会影响全局\n\n"); printf("\t2.人性化设计\n"); printf("\t相关提示信息丰富,以人为本\n\n"); printf("\t3.功能强大\n\n"); printf("\t 实现了:\n"); printf("\t\t1 图书信息录入\n"); printf("\t\t2 图书信息查询\n"); printf("\t\t3 图书信息修改\n"); printf("\t\t4 图书信息删除\n"); printf("\t\t5 图书信息排序\n"); printf("\t\t6 提供游客和管理员两种登陆方式\n"); printf("\t\t 加以修改可以满足网络的需要\n\n"); printf("\t\t7 管理员的帐号密码可以自我设定,修改\n"); printf("\t\t8 彩蛋~~(进入方法嘛,嘿嘿)\n"); printf("\n\t按任意键返回登陆界面!"); input=getchar(); input=getchar(); login(); //任意键返回登陆界面}
/*彩蛋*/void coloregg() //打印界面{ char inp; void login(); system("cls"); printf("\n\n\n\t\t一直以为\n\t\t"); inp=getchar(); inp=getchar(); printf("\t\t隐了身别人就找不到我\n\t\t"); inp=getchar(); printf("\t\t可是我错了\n\t\t"); inp=getchar(); printf("\t\t象我这么出众的男人\n\t\t"); inp=getchar(); printf("\t\t不管到哪都是受人瞩目的焦点\n\t\t"); inp=getchar(); printf("\t\t我那忧郁的眼神\n\t\t"); inp=getchar(); printf("\t\t唏嘘的胡渣子\n\t\t"); inp=getchar(); printf("\t\t还有那神乎其技的AK扫射\n\t\t"); inp=getchar(); printf("\t\t以及那杯82年的马爹利和发哥给的牙签\n\t\t"); inp=getchar(); printf("\t\t无不深深出卖了我~~~\n\t\t"); inp=getchar(); printf("\t\t\t\t--------狂人\n\t\t"); inp=getchar();
login();}
/*离开界面*/void byebye() //离开界面{ char input; system("cls"); printf("\n\n\n\n\n\t\t\t路漫漫其修远兮"); printf("\n\n\n\n\t\t\t\t\t吾将上下而求索"); printf("\n\n\t________________________________________________________________"); printf("\n\n\n\t\t*感谢您的使用*\n\n\t\t"); printf("按任意键退出本系统\n\t\t"); input=getchar(); input=getchar(); printf("\n\t\t"); exit(0); //exit()函数跳出整个程序}
/*删除所有相关信息*/void delall() //管理员选项中的初始化函数{ void login(); void adm_servelist(); int inp; char input; do //如果输入的不是界面提供的选项值,则重复显示输入界面 { system("cls"); printf("\n\n\t----------!!警告!!----------\n"); printf("\n\t一旦选择了全部初始化将清除全部数据!包括图书信息和管理员信息!\n"); printf("\n\t初始化完毕后返回登陆界面\n"); printf("\n\n\t你确定要初始化吗\n"); printf("\n\n\t1.是的~我要初始化\t2.不要~让我再想想\n"); printf("\n\t请输入服务选项:"); scanf("%d",&inp); switch (inp) { case 1: //如果输入为1则删除book.dat和password.dat文件 remove("book.dat"); remove("password.dat"); printf("\n\n\t初始化完毕!\n\t所有数据全部清空!\n\t按任意键返回登陆界面!"); input=getchar(); input=getchar(); login(); //并返回登陆界面 break; case 2: //选2则返回管理员登陆界面 adm_servelist(); break; default: //否则打印如下字样并重复循环 printf("\n\n\t对不起~没有这项服务!\n\t按任意键重新选择\n\t"); input=getchar(); input=getchar(); break; } } while (inp!=1&&inp!=2&&inp!=3);}
/*游客登陆方式*/void tra_view(){ void tra_book_view(); void tra_book_search(); void login();
int inp; char input;
do //同以往的do{}while一样,用来保证用户输入的数能够被执行 { system("cls"); printf("\n\n\t------------欢迎光临ACCP图书馆------------"); printf("\n\n\n\t1.图书信息浏览\n"); printf("\t2.查询指定图书\n"); printf("\t3.退出\n"); printf("\n\n\t请选择服务类别:"); scanf("%d",&inp); if (inp!=1&&inp!=2&&inp!=3) { printf("\n\t没有这项服务~\n"); printf("\t按任意键重新选择"); input=getchar(); input=getchar(); } } while (inp!=1&&inp!=2&&inp!=3);
switch(inp) //分支选择 { case 1: tra_book_view(); break; //选1则执行游客浏览 case 2: tra_book_search(); break; //选2则执行游查询 case 3: login(); break; //选3返回登陆界面 }}
/*游客浏览方式*/void tra_book_view(){ void tra_view(); void tra_book_view();
intinp,i=0,n=0; FILE *fp; char input; struct bookinf bookview[100]; if((fp=fopen("book.dat","rb"))==NULL) //判断图书信息文件是否存在,不存在则显示如下字样 { system("cls"); printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); input=getchar(); tra_view(); //并返回游客进入画面 } else //存在的话则循环读取文件中的信息直到文件指针到达文件尾部 { do { fread(&bookview[i],sizeof(struct bookinf),1,fp); i=i+1; } while (!feof(fp)); //这一段代码以后也会经常用到 fclose(fp); //关闭文件指针 do { system("cls"); //显示读取数据的第一条,条数用变量n控制 printf("\n\t--------共有%d条记录--------",i-1); printf("\n\n\t编号: %d\n",bookview[n].num); printf("\n\t书名: %s\n",bookview[n].bname); printf("\n\t作者名: %s\n",bookview[n].wname); printf("\n\t分类号: %s\n",bookview[n].clanum); printf("\n\t出版单位: %s\n",bookview[n].pubcom); printf("\n\t出版时间: %s\n",bookview[n].pubtime); printf("\n\t价格: %f\n",bookview[n].price);
printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n"); printf("\n\t请选择:"); scanf("%d",&inp); switch (inp) { case 1: //如果选择了上一页 { if (n==0) //如果n到首页则输出以下字样 { printf("\n\t已到达首页\n\t按任意键重新选择"); input=getchar(); input=getchar(); } else //否则就让n自减1跳出选择重复循环 { n=n-1; } break; } case 2: //如果选择了下一页 { if (n==i-2) //如果n到达最尾页 { printf("\n\t已到达最末页\n\t按任意键重新选择"); input=getchar(); input=getchar(); } else //否则就让n自加1跳出选择重复循环 { n=n+1; } break; } case 3: //选择3的话回到游客登陆界面 { tra_view(); break; } default: //没有这项选择时的提示 { printf("\n\t没有这项服务\n\t按任意键重新选择"); input=getchar(); input=getchar(); break; } } } while (inp!=3); }}
/*游客查询方式*/void tra_book_search(){ void tra_view(); void tra_id_search(); void tra_wr_search(); void tra_bn_search();
char input; FILE *fp; int inp; if((fp=fopen("book.dat","rb"))==NULL) //判断图书信息是否存在 { system("cls"); //不存在则打印的界面 printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); input=getchar(); tra_view(); } else { do //同以前一样用do{}while来重复显示 { system("cls"); printf("\n\n\n\t1.按图书编号查询\n"); printf("\n\t2.按图书作者查询\n"); printf("\n\t3.按图书名查询\n"); printf("\n\t4.回到主菜单\n"); printf("\n\n\t请选择查询类别:");

‘叁’ 如何用c语言实现单链表的逆置

扣着的是头节点(头子)

车是首节点(首子)

马是次节点(次子)

牙签细的是指针指向,香头发黑的是指向,铁头细的是指向。

根据步骤写程序的伪算法(3步4循环,7张图片搞定),如下:


第一个循环把马弄到车前面,

第二个循环把相弄到马前面

第三个循环把士弄到相前面

........

直到香指向为空后停止循环。

代码如下:只需要一个首结点pHead,就能把链表找到,并倒置。具体代码如下

p香=pHead->pNext;

p铁=p香->pNext;

p香->pNext=NULL;

P香=p铁

while(p香 !=NULL)

{

p铁=p香->pNext;

p香->pNext=pHead->pNext;

pHead->pNext=p香;

p香=p铁;

}


对照伪算法(三步四循环),和上面的代码是一一对应的:

第一步:香头指向首子,铁头指向次子

第二步:删掉首子指向次子(铁头所指向的那个子)的牙签

第三步:香头跟着铁头

以下循环条件:(条件:香头指向不为空)

{

循环1:铁头移动到香头的下一个指向

循环2:香头的下一个指向首子

循环3:头子的下一个跟着香头

循环4:香头跟着铁头

}

自己用道具操作几遍,然后把流程背会,以后自己根据流程写代码即可。

热点内容
动态规划01背包算法 发布:2024-11-05 22:17:40 浏览:849
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:180
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:739
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:247
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:343
php时间搜索 发布:2024-11-05 20:58:36 浏览:478
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:527
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:408
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:665
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:392