湖南网站制作公司中英双语网站建设

当前位置: 首页 > news >正文

湖南网站制作公司,中英双语网站建设,网站设计制作的服务和质量,下载了源码怎么做网站1、数据结构#xff1a;详细描述归并排序的过程 归并排序是用分治思想#xff0c;分治模式在每一层递归上有三个步骤#xff1a; 分解#xff08;Divide#xff09;#xff1a;将n个元素分成个含n/2个元素的子序列。解决#xff08;Conquer#xff09;#xff1a;用…1、数据结构详细描述归并排序的过程 归并排序是用分治思想分治模式在每一层递归上有三个步骤 分解Divide将n个元素分成个含n/2个元素的子序列。解决Conquer用合并排序法对两个子序列递归的排序。合并Combine合并两个已排序的子序列已得到排序结果。 2、操作系统什么是动态重定位在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换即在逐条指令执行时完成地址映射 3、计算机网络什么是子网掩码请简述其原理及其应用。 子网掩码 (subnet mask) 又叫网络掩码、地址掩码、子网络遮罩是一个应用于 TCP/IP 网络的 32 位二进制值。它可以屏蔽掉 IP 地址中的一部分从而分离出 IP 地址中的网络部分与主机部分基于子网掩码管理员可以将网络进一步划分为若干子网。它必须结合 IP 地址一起使用。 在使用 TCP/IP 协议的两台计算机之间进行通信时我们通过将本机的子网掩码与接受方主机的 IP 地址进行  与 运算即可得到目标主机所在的网络号又由于每台主机在配置 TCP/IP 协议时都设置了一个本机 IP 地址与子网掩码所以可以知道本机所在的网络号。 通过比较这两个网络号就可以知道接受方主机是否在本网络上。如果网络号相同表明接受方在本网络上那么可以通过相关的协议把数据包直接发送到目标主机如果网络号不同表明目标主机在远程网络上那么数据包将会发送给本网络上的路由器由路由器将数据包发送到其他网络直至到达目的地。 4、 ①从键盘上输入数字1-7输出对应的日期。 #include stdio.hint main() {int a;printf(Please input a single numeral(1-7): );scanf(%d,a);if (a1)printf(Sunday\n);else if (a2)printf(Monday\n);else if (a3)printf(Tuesday\n);else if (a4)printf(Wednesday\n);else if (a5)printf(Thursday\n);else if (a6)printf(Friday\n);else if (a7)printf(Saturday\n);elseprintf(Invalid - please input a single numeral(1-7).\n);return 0; } ②计算从100-500的所有素数个数以及其中所有素数之和。 #includestdio.h int prime(int n) //定义函数判断素数 { int i,flag1; for(i2;in/2;i) if(n%i0)flag0; if(flag0)return 0; else return 1; } void main() //主函数 { int i,sum0; for(i100;i500;i) if(prime(i)1)sumi; printf( sum%d\n,sum); } ③输出5*5矩阵中的最大值和最小值以及其下标。 #include stdio.hvoid fun(int *p,int n) {int *pmax,*pmin,*m;int t;pmax pmin m p; //四个指针均指向一维空间的起始单元//找最大数和最小数for(mm1;mpn;m){if(*m *pmax){pmax m;}if(*m *pmin){pmin m;}}//把最大数放到中心位置 t *(p252);(p12) *pmax;*pmax t;//把最小值放到左上角t *p;*p *pmin;*pmin t;//找次小数pmin p1;m p 2;for(; mpn;m){if(*m *pmin){pmin m;}}//把次小数置换到右上角t (p4);(p4) *pmin;*pmin t;//找次次小数pmin p1;m p2;for(; mpn;m){if( (*m*pmin)(m!(p4)) ){pmin m;}}//把次次小数置换到左下角 [4][0]——4*50t (p20);(p20) *pmin;*pmin t;//找出此次次次小数pmin p1;m p2;for(; mpn;m){if( (*m*pmin)(m!(p4))(m!(p20)) ){pmin m;}}//把次次次小数置换到右下角 [4][4]——24t (p24);(p24) *pmin;*pmin t; } int main() {int a[5][5],i,j;for(i0;i5;i){for(j0;j5;j){scanf(%d,a[i][j]);}}fun(*a,25);for(i0;i5;i){for(j0;j4;j){printf(%d ,a[i][j]);}printf(%d,a[i][j]);printf(\n);} return 0; } ④从输入的字符串中找出数字并将其删除后输出。 #includestdio.hint dele(char x[]){int i 0; int j 0;while (x[i] ! \0){ if (x[i] 0x[i] 9) //用ASCII判断x[]数组内容是否为数字i; //只加i变量相当于剔除当字符串某一字符为数字剔除下标else{x[j] x[i]; i; j;}}x[j] \0; //末尾的下标是没\0的需要加进去return x[j]; }int main() {char str[100]; //char型数组存字符int型数组存整形printf(Please input a sentence\n);//scanf(%s, str); //遇到空格\t \n停止gets(str); //遇到回车停止dele(str);printf(The new string is:%s\n, str);return 0; } ⑤定义结构体 typedef struct { int sno; char name [10]; } 从键盘上输入学生信息并将其写入文件“student.dat”中输入学号为0时即停止输入。 #include stdio.h #include string.htypedef struct {int sno;char name[10]; } Student;int main() {Student student;printf(请输入学生的学号和姓名学号和姓名之间用空格隔开);scanf(%d %9s, student.sno, student.name); // 使用%9s限制字符串长度为9避免溢出printf(学号: %d, 姓名: %s\n, student.sno, student.name);return 0; } ⑥递归方法写出直接插入排序。 public static void sort(int []arr,int k) {if(k0) { //递归的出口return; //第一个元素不用去排序}sort(arr,k-1); //对从0到倒数第二个元素排序int xarr[k]; int indexk-1; //设置指针while(index-1 xarr[index]) { //对最后一个元素进行插入arr[index1]arr[index]; //交换index–;}arr[index1]x; //指针的边界} 5、 1关于链表的大题 ①初始化带头结点的链表A void initList(LinkList L) {// 1、要给头指针分配一个存储空间注意一个单链表哪怕他是空的他都必须有个头指针L (LNode *)malloc(sizeof(LNode));// 2、此处是初始化带头结点的单链表所以头指针L是指向头结点而L-next的意思是头指针指向头结点的指针域而头结点的指针域存储着下一节点的地址所以给L-next赋值为null就表示头结点后面没有结点单链表是空的L-nextNULL; } ②构造有N个节点的非递减链表 //有序单链表 #includestdio.h #includestdlib.h #includestring.h struct Node {int data;struct Node *next; }; //顺序插入 void Insert(Node *p,int n) {//利用两个指针Node *p1p;//指向头 因为这是有序单链表 所以每次插入前都得先从头来 Node *p2p-next; //指向头节点之后 之后也用它来判断是否位只含有头节点的空链表 Node *s(Node *)malloc(sizeof(Node));s-datan;//写入数据while(p2p2-datan){p1p2;p2p2-next;//这样同时往后移的话 插入的时候好插入 }s-nextp2;p1-nexts;//插入节点 } //遍历列表void traversal(Node *p){Node *p3p-next;//不能从p开始遍历因为p是头节点没存东西while(p3){printf(%d\n,p3-data);p3p3-next;}} int main() {Node *p;int i,j,k;p(Node )malloc(sizeof(Node));p-nextNULL;//创建头节点 for(i0;i3;i){printf(Please input the number you want to insert);scanf(%d,k);Insert(p,k);}traversal(p);return 0; } ③将链表A中不重复的数字复制到链表B中 #include stdio.h #include stdlib.htypedef struct Node {int data;struct Node next; } Node, LinkedList;// 创建一个新节点 Node createNode(int data) {Node* newNode (Node)malloc(sizeof(Node));if (newNode NULL) {printf(内存分配失败\n);exit(0);}newNode-data data;newNode-next NULL;return newNode; }// 向链表中插入数据 void insertData(LinkedList head, int data) {Node* newNode createNode(data);if (*head NULL) {head newNode;} else {Node temp head;while (temp-next ! NULL) {temp temp-next;}temp-next newNode;} }// 打印链表 void printList(LinkedList head) {while (head ! NULL) {printf(%d , head-data);head head-next;}printf(\n); }// 将链表a中的不重复元素复制到链表b中 void copyUniqueToLinkedList(LinkedList a, LinkedList b) {Node* currentA a;Node* currentB b;while (currentA ! NULL) {int isUnique 1; // 假设是唯一的Node tempA a;while (tempA ! currentA) {if (tempA-data currentA-data) {isUnique 0; // 发现重复break;}tempA tempA-next;}if (isUnique) {Node* newNode createNode(currentA-data);if (*b NULL) {*b newNode;} else {currentB-next newNode;}currentB newNode;}currentA currentA-next;} }int main() {LinkedList headA NULL;LinkedList headB NULL;// 示例数据insertData(headA, 1);insertData(headA, 2);insertData(headA, 3);insertData(headA, 2);insertData(headA, 4);insertData(headA, 1);printf(链表A: );printList(headA);copyUniqueToLinkedList(headA, headB);printf(链表B(不重复元素): );printList(headB);return 0; } 2关于双端队列的大题 ①初始化队列 void Init(QUEUE *Q) {(*Q).front (struct celltype *)malloc(sizeof(struct celltype));(*Q).front-nextNULL; //创建一个空节点并将其作为队列的头(*Q).rear (Q).front; //将尾指针指向头指针 } ②关于从队头队尾插入元素的问题 typedef struct Node {int data;struct Node next; } Node; typedef struct LinkedList {Node* head;Node* tail; } LinkedList; void insert_to_head(LinkedList* list, int value) {Node* new_node (Node)malloc(sizeof(Node));new_node-data value;new_node-next list-head;list-head new_node;if (list-tail NULL) {list-tail new_node;} }void insert_to_tail(LinkedList list, int value) {Node* new_node (Node)malloc(sizeof(Node));new_node-data value;new_node-next NULL;if (list-tail NULL) {list-head list-tail new_node;} else {list-tail-next new_node;list-tail new_node;} } void print_list(LinkedList list) {Node* current list-head;while (current ! NULL) {printf(%d , current-data);current current-next;}printf(\n); } int main() {LinkedList list;list.head list.tail NULL;insert_to_head(list, 1);insert_to_tail(list, 2);insert_to_head(list, 3);insert_to_tail(list, 4);print_list(list); // 输出: 3 1 2 4return 0; } ③关于从队头队尾删除元素的问题 #include stdio.h #include stdlib.htypedef struct Node {int data;struct Node *next; } Node;typedef struct Queue {Node *front;Node *rear; } Queue;// 初始化队列 void init(Queue *q) {q-front NULL;q-rear NULL; }// 在队尾插入元素 void enqueue(Queue *q, int data) {Node *newNode (Node *)malloc(sizeof(Node));newNode-data data;newNode-next NULL;if (q-rear NULL) {q-front q-rear newNode;} else {q-rear-next newNode;q-rear newNode;} }// 从队头删除元素 void dequeueFromFront(Queue *q) {if (q-front NULL) {printf(Queue is empty\n);return;}Node *temp q-front;q-front q-front-next;free(temp);if (q-front NULL) {q-rear NULL;} }// 从队尾删除元素 void dequeueFromRear(Queue *q) {if (q-front NULL) {printf(Queue is empty\n);return;}Node *current q-front;if (current-next NULL) {free(current);q-front q-rear NULL;} else {while (current-next ! q-rear) {current current-next;}free(q-rear);q-rear current;q-rear-next NULL;} }int main() {Queue q;init(q);// 添加元素enqueue(q, 10);enqueue(q, 20);enqueue(q, 30);// 从队头删除元素dequeueFromFront(q);// 从队尾删除元素dequeueFromRear(q);return 0; }