Ubuntu桌面定制

1、可以使用Just Perfection对Ubuntu桌面(gnome-shell)进行定制

        gnome-tweaks提供了简单的定制能力,可以通过gnome-shell扩展(浏览器插件{Firefox/Chrome})来安装扩展插件,通过插件来定制桌面。

         apt install chrome-gnome-shell gnome-shell-extensions gnome-tweaks  --安装基本的软件

      通过浏览器(Chome/Firefox)扩展程序,安装  gnome-shell集成 插件,使用该插件安装各种插件,其中Just Perfection有很强大的桌面定制能力。

2、桌面系统的汉化

         apt-get install fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp fonts-arphic-gkai00mp 

vi /etc/default/locale 

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:en"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"

3、主机名修改涉及的两个文件,修改对应的内容

          vi /etc/hostname

          vi /etc/hosts

4、普通用户安装软件不输入密码

       sudo usermod -aG sudo mengA

       sudo usermod -aG root  mengA

       sudo visudo

            mengA ALL=(ALL) NOPASSWD:ALL  --新增

(1)建立线性表的链式存储结构,实现线性链表的建表、查找、插入和删除操作。 〖提示〗首先定义线性链表如下: typedef struct node datatype data; struct node *next; }LNode, *LinkList; 此题可仿照实验指导一节中22· 1顺序表的应用来做。将每个操作定义为一个函数,主程序对各个函数进行调用。函数的实现可参看配套教材。 (2) 处理约瑟夫环问题也可用数组完成,请编写使用数组实现约瑟夫环问题的算和程序。 〖提示〗首先定义线性表的顺序存储结构,约瑟夫环的算思想参看实验指导一节的 223小节。 (3) 假设有两个按元素递增有序排列的线性表A和B'均以单链表作存储结构,请编写算将表A和表B归并成一个按元素非递减有序(允许相同)排列的线性表c,并要求利用原表(即表A和表B)的结点空间存放表co 〖提示〗除了指向线性表c头结点的指针外,还需设置三个指针Pa、Pb、Pc;首先 pa、Pb分别指向线性表A和B的表头,pc指向A和B的表头较小的结点,线性表c头结点的指针等于pc;然后,比较pa与Pb的的大小,让Pc的后继指向较小的指针,接着pc向后移动,较小的指针也向后移动,以此类推,直到pa、Pb中某一个为空,这时,让pc的后继指向pa、Pb中非空的指针,这样就完成了c表的建立。 (4) 给定一个整数数组b[0..N-1], b中连续相等元素构成的子序列称为平台,试设计算,求出b中最长平台的长度。 〖提示〗设置一个平台长度变量Length和一个计数器sumo初始化Length为1' sum 为1,再设置两个下标指针i、jo首先,i指向第一个数组元素,j指向其次的第二个元素,比较i、j指向元素的大小,若相等,则sum++' i++' j++'再次比较i、j指向元素的大小,若不相等,则比较Length与sum的大小,如果sum大于Length'则把sum的赋给Length, sum的重置为1,同时i、j也向前各移动一位;重复上面的过程,直到i 指向最后一个元素为止,此时的Length就是最长平台的长度。 (5) 大整数的加运算。c语言中整数类表示数的范围为一231、231一1 '无符号数表示数的范围为0、232一1,即0、4 294967 295,可以看出,不能存储超出10位数的整数。有些问题需要处理的整数远不止10位。这种大整数用c语言的整数类直接表示。请编写算完成两个大整数的加操作。 〖提示〗处理大整数的一般方是用数组存储大整数,数组元素代表大整数的一位,通过数组元素的运算模拟大整数的运算。注意需要将输入到字符数组的字符转换为数字。 程序中可以定义两个顺序表LA、LB来存储两个大整数,用顺序表LC存储求和的结果。 (6) 设计一个学生成绩数据库管理系统,学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本题目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。用户可以自行定义和创建数据库,并能保存数据库信息到指定文件以及打开并使用己存在的数据库文件。要求能提示和等待用户指定命令,进行相关操作。 〖提示〗本题目的数据是一组学生的成绩信息,每条学生的成绩信息可由学号、姓名和成绩组成,这组学生的成绩信息具有相同特性,属于同一数据对象,相邻数据元素之间存在序偶关系。由此可以看出,这些数据具有线性表中数据元素的性质,所以该系统的数据采用线性表来存储。本题目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以先构造一个单链表,其结点信息包括字段名、字段类以及指向下一结点的指针。通过对单链表的创建,达到创建库结构的目标。要能实现打开和关闭数据库操作,将每个功能写成一个函数来完成对数据的相应操作,最后完成主函数以验证各个函数功能并得出运行结果。
最新发布
03-26
### C语言实现线性表的链式存储结构 #### 查找操作 在链式存储结构中,查找某个特定元素的操作通常通过遍历整个单链表完成。由于链表中的节点不连续存储,因此无像数组那样直接访问指定位置的数据项。 以下是基于单链表的查找函数实现: ```c typedef struct Node { int data; struct Node* next; } Node; Node* find(Node* head, int target) { Node* current = head; while (current != NULL && current->data != target) { current = current->next; // 移动到下一个节点 } return current; // 如果找到返回指针,未找到则返回NULL } ``` 此方的时间复杂度为O(n)[^1],其中n是链表长度。 --- #### 插入操作 对于单链表,在给定位置插入新节点需要调整前后节点之间的链接关系。如果是在头结点之前插入,则需特别处理头指针的变化。 下面是向单链表头部插入一个新节点的例子: ```c void insert_head(Node** head_ref, int new_data) { Node* new_node = (Node*)malloc(sizeof(Node)); new_node->data = new_data; new_node->next = *head_ref; // 新节点指向原头节点 *head_ref = new_node; // 更新头指针 } ``` 上述代码展示了如何动态分配内存创建新节点,并将其作为新的头节点连接至原有链表前端。 --- #### 删除操作 删除指定的第一个匹配节点时,同样要先定位目标节点及其前驱节点的位置。之后修改前驱节点的`next`字段即可移除目标节点。 下面是一个简单的例子用于演示这一过程: ```c void delete_node(Node** head_ref, int key) { Node* temp = *head_ref, *prev = NULL; if (temp != NULL && temp->data == key) { // 若头节点就是要删掉的那个 *head_ref = temp->next; // 修改头指针 free(temp); // 释放旧头节点空间 return; } while (temp != NULL && temp->data != key) { prev = temp; temp = temp->next; } if (temp == NULL) return; // 节点不存在的情况 prev->next = temp->next; // 断开待删除节点 free(temp); } ``` 这里需要注意的是当被删除的目标位于列表开头或者中间/结尾的不同情况下的特殊处理逻辑。 --- #### 约瑟夫环问题求解 约瑟夫环问题是经典的循环淘汰类题目,可以通过模拟的方式借助双向或单向链表解决。每次迭代都从当前剩余人员集合里按照固定步长挑选一个人出局直到剩下最后一位幸存者为止。 一种可能的解决方案如下所示: ```c #include <stdio.h> #include <stdlib.h> struct Person { int id; struct Person* next; }; // 创建初始圈形链表 Person* create_circle(int n){ Person* first = malloc(sizeof(Person)), *last=first,*p; last ->id=1; for(int i=2;i<=n;i++){ p=(Person *)malloc(sizeof(Person)); p->id=i; last->next=p; last=p; } last->next=first;//形成闭环 return first; } int main(){ int m,n,k,i,j; scanf("%d%d",&m,&k); Person *circle=create_circle(m),*pre=circle,*cur=circle; for(i=m;i>1;i--){ for(j=1;j<k&&cur!=NULL;j++) pre=cur , cur=cur->next ; printf("%d ",cur->id ); pre->next=cur->next ;free(cur); cur=pre->next ; } printf("\nThe survivor is %d\n",cur->id ); return 0;} ``` 以上程序片段实现了基本功能框架,但并未考虑边界条件以及错误输入情形下应有的健壮性和鲁棒性的提升措施[^2]。 --- #### 大整数加运算 大整数相加可以采用字符串形式保存每一位数字并通过逐位累加的方式来计算结果。考虑到进位因素的影响,还需要额外设置变量记录每一轮产生的进位量。 示例代码如下: ```c char* addStrings(char* num1, char* num2) { int carry = 0; int len1 = strlen(num1)-1; int len2 = strlen(num2)-1; int max_len = fmax(len1,len2)+2; char res[max_len]; memset(res,'0',sizeof(res)); while(len1 >=0 ||len2>=0||carry ){ int sum = ((len1<0)?'0':num1[len1]) - '0'+((len2<0)?'0':num2[len2]-'0')+carry; res[--max_len]=sum%10+'0'; carry=sum /10; --len1;--len2; } return strdup(&res[max_len]); } ``` 这段代码定义了一个辅助函数用来执行任意精度的大整数加规则[^4]。 --- #### 单链表归并排序 归并将两个已有序序列组合成一个新的整体顺序排列的过程称为归并。针对单链表而言,我们可以递归地把其拆分成更小的部分再逐步合并回去得到最终完全排好序的新链条。 核心部分伪码描述如下: ```plaintext MergeSort(headRef) If list size equals to one or zero then Return. Divide the unsorted list into two sublists of about half the size. Call MergeSort recursively on both halves until each sublist contains only one element. Then merge those sorted lists back together using helper function `merge`. End Function. HelperFunction Merge(listA,listB) Create dummy node as start point and set tail pointer initially pointing at it also. While neither A nor B becomes empty do following steps: Compare heads from either side pick smaller value append after tail move corresponding iterator forward accordingly update tail reference too. Endwhile loop once any part exhausts attach rest portion directly behind previous attachment place. Return newly formed ordered chain starting address stored inside dummy's next field member variable now. ``` 具体实现细节省略此处仅提供思路指引[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值