华清远见上海中心22071班 8.25作业
目录
1.用无头结点的循环链表实现约瑟夫环问题
头文件:
功能函数:
主函数:
终端输出:
2.顺序栈实现进制转换问题
头文件:
功能函数:
主函数:
终端输出:
1.用无头结点的循环链表实现约瑟夫环问题
头文件:
#ifndef _ZY1_H
#define _ZY1_Htypedef int datatype;
typedef struct Node
{union{datatype data;int len;};struct Node *next;
}joseph;
//创建
joseph *ring_creat();
//判空
int empty(joseph *l);
//删除头结点
joseph *kill(joseph *l);
//插入
int insert(joseph *l,datatype e);
//约瑟夫环
int ring(joseph *h,int n,int m);
//删头后遍历
void show(joseph *h);
#endif
功能函数:
#include<stdio.h>
#include<stdlib.h>
#include"zy1.h"joseph *ring_creat()
{joseph *l=(joseph*)malloc(sizeof(joseph));if(NULL==l){printf("创建失败\n");return NULL;}l->len=0;l->next=l;printf("创建成功\n");return l;
}
int empty(joseph *l)
{return l->next==l?1:0;
}
joseph *kill(joseph *l)
{if(NULL==l){free(l);l=NULL;return NULL;}joseph *p=l;while(p->next!=l){p=p->next;}p->next=l->next;free(l);l=NULL;printf("删除成功\n");return p->next;
}
int insert(joseph *l,datatype e)
{if(NULL==l){printf("插入失败\n");return -1;}joseph *p=(joseph*)malloc(sizeof(joseph));p->data=e;p->next=NULL;if(NULL==p){printf("申请失败\n");return -2;}joseph *q=l;while(q->next!=l){q=q->next;}p->next=l;q->next=p;l->len++;printf("插入成功\n");return 0;
}
int ring(joseph *l,int n,int m)
{joseph *p=l;printf("约瑟夫环实现:");for(int j=0;j<n;j++){for(int i=0;i<m-2;i++){p=p->next;}joseph *q=p->next;printf("%d\t",q->data);p->next=q->next;p=p->next;free(q);q=NULL;} printf("\n");
}
void show(joseph *h)
{if(h==NULL){printf("遍历失败\n");return;}printf("删除头结点后:");joseph *q=h;do{printf("%d\t",q->data);q=q->next;}while(q!=h);printf("\n");
}
主函数:
#include"zy1.h"
#include <stdio.h>
int main(int argc, const char *argv[])
{joseph *l= ring_creat();insert(l,1); insert(l,2); insert(l,3); insert(l,4); insert(l,5); insert(l,6); insert(l,7); insert(l,8); joseph *h=kill(l);show(h);ring(h,8,4);return 0;
}
终端输出:
2.顺序栈实现进制转换问题
头文件:
#ifndef _ZY2_H
#define _ZY2_H
#define M 100
typedef int datatype;
typedef struct
{datatype data[M];int top;
}trans;
//创建栈
trans *creat();
//判空
int empty(trans *s);
//判满
int full(trans *s);
//入栈
int push(trans *s,datatype e);
//出栈
int pop(trans *s);
//遍历
void show(trans *s);
//二进制转换
int transform_2(trans *s,int n);
//八进制转换
int transform_8(trans *s,int n);
//十六进制转换
int transform_16(trans *s,int n);
#endif
功能函数:
#include<stdio.h>
#include<stdlib.h>
#include"zy2.h"trans *creat()
{trans *s=(trans*)malloc(sizeof(trans));if(NULL==s){printf("创建失败\n");return NULL;}s->top=-1;printf("创建成功\n");return s;
}
int empty(trans *s)
{return s->top==-1?1:0;
}
int full(trans *s)
{return s->top==M-1?1:0;
}
int push(trans *s,datatype e)
{if(NULL==s||full(s)){printf("入栈失败\n");return -1;}s->top++;s->data[s->top]=e;printf("入栈成功\n");return 0;
}
int pop(trans *s)
{if(NULL==s||empty(s)){printf("出栈失败\n");return -1;}printf("%d出栈成功\n",s->data[s->top]);s->top--;return 0;
}void show(trans *s)
{if(NULL==s||empty(s)){return ;}printf("当前栈中从栈顶到栈底元素分别是:");for(int i=s->top;i>=0;i--){printf("%d\t",s->data[i]);}printf("\n");
}
int transform_2(trans *s,int n)
{if(NULL==s){printf("转换失败\n");return -1;}while(n/2!=0){push(s,n%2);n=n/2;}push(s,n);printf("输出二进制:");show(s);s->top=-1;return 0;
}
int transform_8(trans *s,int n)
{if(NULL==s){printf("转换失败\n");return -1;}while(n/8!=0){push(s,n%8);n=n/8;}push(s,n);printf("输出八进制:");show(s);s->top=-1;return 0;
}
int transform_16(trans *s,int n)
{if(NULL==s){printf("转换失败\n");return -1;}while(n/16!=0){push(s,n%16);n=n/16;}push(s,n);printf("输出十六进制:");for(int i=s->top;i>=0;i--){switch(s->data[i]){case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;default:printf("%d",s->data[i]);}}printf("\n");s->top=-1;return 0;
}
主函数:
#include"zy2.h"
#include <stdio.h>
int main(int argc, const char *argv[])
{int n;trans *s=creat();printf("输入一个十进制数:");scanf("%d",&n);transform_2(s,n);show(s);transform_8(s,n);show(s);transform_16(s,n);return 0;
}
终端输出:
华清远见上海中心22071班 8.25作业相关推荐
- 华清远见上海中心22071班 9.2作业
1.用父子进程拷贝一张图片,其中子进程先拷贝后半部分,父进程后拷贝前半部分.要求用文件IO实现. 函数: #include <stdio.h> #include <fcntl.h&g ...
- 华清远见上海中心22071班--11.19作业
题目:实现开发板点灯操作 程序要求: 1)分部实现注册字符设备驱动 2)自动创建设备节点 3)通过结构体对led灯地址进行映射 4)次设备号完成私有数据传参 5)在open函数中获取到次设备号,用私有 ...
- 华清远见上海中心22071班 9.7作业
目录 1.创建两个线程 A.B,要求A线程读取文件中的数据,B线程将读取到的数据打印到终端上,类似shell命令cat. 2.编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自 ...
- 华清远见上海中心22071班 9.30作业
电子词典: 登录注册功能,不能重复登录,重复注册 单词查询功能 历史记录功能,存储单词,意思,以及查询时间 基于TCP,支持多客户端连接 采用数据库保存用户信息与历史记录 将dict.txt的数据导入 ...
- 华清远见上海中心22071班 8.24作业
1.单向链表按位置修改 void list_update_pos(linklist *L,int pos,datatype e) {if(NULL==L||list_empty(L)||pos< ...
- 华清远见上海中心22071班 9.21作业
1.完成数据库的插入.删除.修改,插入选择全字段插入.删除.修改选择用id的方式 代码: #include <stdio.h> #include <sqlite3.h> #in ...
- 华清远见上海中心22071班 9.19作业
目录 1.并发服务器 1)多进程并发服务器 2)多线程并发服务器 2.域套接字 1.流式域套接字(TCP) 1.1服务器 1.2客户端 2.报式套接字(UDP) 2.1服务器 2.2客户端 1.并发服 ...
- 华清远见上海中心22071班--11.24作业
题目:应用层采取ioctl命令控制,驱动代码用GPIO子系统,实现开发板6盏灯的循环亮灭 头文件程序: #ifndef __LED_H__ #define __LED_H__typedef enum{ ...
- 华清远见上海中心22071班--11.28作业
题目:三个按键实现按键中断,key1>>led1,key2>>led2, key3>>led3.按键按一下灯亮,再按一下灯灭 . #include <linu ...
最新文章
- java io使用哪些设计模式_JAVA IO中的设计模式
- matlab怎么求矩阵的范数
- 【最后一天倒计时】你离¥399网易黑猪肉券就差一步
- js判断fck编辑器内容是否为空并获得焦点
- I/O复用函数的使用——poll
- 三年了总觉的还是该写点什么
- leetcode29. 两数相除(位运算)
- 两岸三地在线编程学习网站大全
- 卓越领导者的智慧(精华版)
- python嵌套字典的建立_python – 从Pandas DataFrame创建复杂的嵌套字典
- portlet_Portlet Servlet JSP
- ZCANPRO-CAN/CANFD收发软件:安装及使用
- 并查集算法最全最详细讲解
- W10电脑U盘插入电脑不显示盘符但是“安全删除硬件并弹出媒体”中却有该U盘
- 自动化测试工具 Java等
- 大数相乘 - 浮点数
- 错误:未将对象引用设置到对象的实例
- arch linux界面,ArchLinux图形界面安装
- 这是一个浮躁的时代(程序员)
- 使用J-FLASH烧写stm32F407