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

PTA数据结构作业一

6-1 链表的插入算法

本题要求实现一个插入函数,实现在链表llist中的元素x之后插入一个元素y的操作。

函数接口定义:

int InsertPost_link(LinkList llist, DataType x, DataType y); 其中 llist是操作的链表,x是待插入元素y的前驱节点元素,y是待插入的元素

int InsertPost_link (LinkList llist,DataType x,DataType y)
{LinkList m=llist->next;LinkList n;while(m->data!=x){m=m->next;if(m==NULL){printf ("not exist data %d\n",x);return 0;}}n=(LinkList) malloc (sizeof(struct Node));if (n!=NULL){n->data=y;n->next=m->next;m->next=n;return 0;}
}

6-2 链表的删除算法

本题要求实现一个函数,实现删除链表llist中的指定元素deldata。

函数接口定义:

void DelNode_Link(head, deldata);

其中head是操作的链表表头结点,deldata是待删除的元素。

1.创建结构体和宏定义类型名
#include<stdio.h>
#include<stdlib.h>typedef int DataType;
struct Node {DataType	  data;struct Node*  next;
};
typedef struct Node  *PNode;
typedef struct Node  *LinkList;2.创建头节点。
LinkList SetNullList_Link ()
{LinkList head=(LinkList)malloc(sizeof(struct Node));if(head!=NULL){head->next=NULL;return head;}elseprintf("alloc failure");return head;
}3.利用尾插法创建单向链表。
void CreatList(struct Node* head)
{int data;LinkList p=head->next,pre=head;scanf("%d",&data);while(data!=-1){p=(struct Node*)malloc(sizeof(struct Node));p->data=data;p->next=NULL;pre->next=p;pre=p;scanf("%d",&data);}
}
4.删除值为x的节点。
void DelNode_Link(LinkList head, DataType x)
{LinkList p=head->next;LinkList beforep=head;  //通过beforep和p遍历整个链表while(p!=NULL){if(p->data==x){beforep->next=p->next;free(p);//释放节点p,否则占用内存空间break;}else{beforep=p;p=p->next;if(p==NULL)printf("not exist %d\n",x);}}
}5.打印整个链表。
void print(LinkList head)
{LinkList p=head->next;while (p!=NULL){printf("%d ",p->data);p=p->next;}
}6.主函数
int main()
{   int x;LinkList head;head=SetNullList_Link();CreatList(head);scanf("%d",&x);DelNode_Link(head,x);print(head);return 0;
}

6-3 移动链表中的最大值到尾部

编写函数MoveMaxToTail(),实现查找单链表中值最大的结点,并将其移动到链表尾部,注意其他结点的相对次序不变。要求尽量具有较高的时间效率。
例如输入8 12 46 30 5,输出为8 12 30 5 46

函数接口定义:

void MoveMaxToTail (LinkList H );

void MoveMaxToTail(LinkList head)
{ 
LinkList pre=head;
LinkList r=head;LinkList q=pre->next;while(q!=NULL){ if(pre->data<q->data){ pre=q;}q=q->next;}while(r->next!=pre)r=r->next;      //指针r指向最大元素的上一个元素,便于进行删除操作q=head;while(q->next!=NULL)q=q->next;       //使q重新指向链表中的最后一个元素,便于进行插入操作if(pre->next==NULL)return;         //若最后一个元素为最大元素,则直接返回,不需要进行其他操作else{ r->next=pre->next;pre->next=NULL;q->next=pre;}
}

6-4 合并两个递增有序的单循环链表

本题要求实现一个合并函数,实现对有序单循环链表tail1和tail2的合并,要求合并时实现去重操作,即合并后的链表中没有重复的元素,并且合并后的链表为递增有序链表。

函数接口定义:

PNode mergeNDeduplicateList(PNode tail1, PNode tail2);

其中tail1是待合并的第一个有序单循环链表,采用的尾指针表示方法;tail2是待合并的第二个有序单循环链表,采用的尾指针表示方法;

解法一:

1.创建结构体和宏定义类型名。
#include<stdio.h>
#include<stdlib.h>typedef int DataType; 
struct Node {DataType	  data; struct Node*  next;  
};
typedef struct Node  *PNode;    
typedef struct Node  *LinkList;   2.创建尾节点,给尾节点的赋值-1。
PNode createEmptyLinkedList()
{PNode current;  //尾结点current = (PNode)malloc(sizeof(Node));current->next = NULL;current->data = -1;return current;
}3.创建单循环链表。注意,尾节点并未插入链表中,tail->next指向最后一个节点,并不是tail指向最后一个节点。tail->data的值为-1。
PNode buildCircularLinkedList(int n, PNode tail)
{PNode current=NULL, prev;prev = tail; for (int i = 0; i < n; i++){current = (PNode)malloc(sizeof(Node));current->next = NULL;scanf("%d", &current->data);prev->next = current;prev = current;}current->next = tail->next;     //形成循环tail->next = current;     //tail在此时才变成了尾指针,并指向尾结点;之前一直担任头指针的角色,指向的是首元节点。return tail;
}4.实现有序单循环链表tail1和tail2的合并,要求合并时实现去重操作,即合并后的链表中没有重复的元素,并且合并后的链表为递增有序链表。
PNode mergeNDeduplicateList(PNode tail1, PNode tail2)
{int temp;PNode pre, q;//合并tail1和tail2链表,并将循环链表拆成单向链表LinkList head=tail1->next->next;        //head为tail1的首元节点tail1->next->next= tail2->next->next;    //将tail1的尾结点与tail2的首元节点相连接tail2->next->next=NULL;    //将tail2尾结点的指针域置空//通过指针pre和p的移动,对链表进行冒泡排序(从小到大)。pre=head;         //pre指向首元节点q=head->next;for(pre=head; pre->next!=NULL; pre=pre->next)for(q=pre->next; q!=NULL; q=q->next){if(pre->data>q->data){temp=pre->data;pre->data=q->data;q->data=temp;}}//对链表进行去重操作,代码如下pre=head;q=pre->next;while(q!=NULL){if(pre->data==q->data)   //两个结点中的数据元素相等{ if(q== tail2->next)        //当最后两个元素相等时,需要做特殊处理{tail2->next=pre;          //因为q->next=NULL,当执行pre->next=q->next时,会导致pre->next=NULL,pre->next=NULL;      //即tail2节点会丢失,不便于等会链表首尾结合和返回tail2指针}                              else                                //相等的不是最后两个结点{pre->next=q->next;    //删除后一个结点free(q);q=pre->next;}}else    //两个结点中的值不相等,则后移,继续对比{pre=q;q=q->next;}}tail2->next->next=head;  //对链表进行首尾接合,并使tail2作为尾指针return tail2;
}
5.打印链表。
void printCircularLinkedList(PNode tail)
{PNode current, last;last = tail->next;current = last->next;do{printf("%d ", current->data);current = current->next;} while (current != last->next);
}
6.将函数整合进主函数中。代码如下
int main()
{PNode list1, list2;int list1_number, list2_number;list1 = createEmptyLinkedList();list2 = createEmptyLinkedList();scanf("%d", &list1_number);buildCircularLinkedList(list1_number, list1);scanf("%d", &list2_number);buildCircularLinkedList(list2_number, list2);list1 = mergeNDeduplicateList(list1, list2);printCircularLinkedList(list1);return 0;
}

解法二:


#include<stdio.h>
#include<stdlib.h>typedef int DataType;      
struct Node
{DataType data;struct Node * next;
};
typedef struct Node Node;  
typedef struct Node  *PNode;
typedef struct Node  *LinkList;PNode createEmptyLinkedList()
{PNode current;current = (PNode)malloc(sizeof(Node));current->next = NULL;current->data = -1;return current;
}PNode buildCircularLinkedList(int n, PNode tail)
{PNode current=NULL, prev;prev = tail; for (int i = 0; i < n; i++){current = (PNode)malloc(sizeof(Node));current->next = NULL;scanf("%d", &current->data);prev->next = current;prev = current;}current->next = tail->next;tail->next = current;return tail;
}PNode mergeNDeduplicateList(PNode tail1, PNode tail2)
{PNode LinkNode;LinkNode = tail2->next->next;tail2->next->next = tail1->next->next;tail1->next->next = LinkNode;free(tail2);PNode StopNode,pre,p;StopNode = tail1->next->next;while(StopNode != tail1->next){pre = StopNode;p = pre->next;while(pre != tail1->next){if(p->data == StopNode->data){if(p == tail1->next)tail1->next = pre;PNode temp;temp = p;pre->next = p->next;p = pre->next;free(temp);}else{pre = pre->next;p = pre->next;}}StopNode = StopNode->next;}do{pre = tail1->next->next;p = pre->next;while(pre != tail1->next){if(p->data < pre->data){DataType TempData;TempData = p->data;p->data = pre->data;pre->data = TempData; }else{pre = pre->next;p = pre->next;}}StopNode = StopNode->next;}while(StopNode != tail1->next);return tail1;
}void printCircularLinkedList(PNode tail) 
{PNode current, last;last = tail->next;current = last->next;do{printf("%d ", current->data);current = current->next;} while (current != last->next);
}int main()
{PNode list1, list2;int list1_number, list2_number;list1 = createEmptyLinkedList();list2 = createEmptyLinkedList();scanf("%d", &list1_number);buildCircularLinkedList(list1_number, list1);scanf("%d", &list2_number);buildCircularLinkedList(list2_number, list2);list1 = mergeNDeduplicateList(list1, list2);printCircularLinkedList(list1);return 0;
}

6-5 链表中奇偶结点的移动

本题要求实现一个函数,实现对单循环链表中奇数和偶数结点的移动,要求奇数在前面,偶数在后面,且结点之间的相对顺序不变。

函数接口定义:

PNode Move_Odd_Even(LinkList tail);

tail是单循环链表的尾指针

解法一:

奇偶点移动函数,此函数是本题的重点,采用的方法大致为:
①建立两个新链表,head1链表负责装偶数,head2链表负责装奇数。
②遍历链表每一个节点,若为奇数,则利用尾插法插入head2链表;若为偶数,则利用尾插法插入head1链表;
③将head1和head2的链表头尾连接,形成一个新的单向循环链表,并将次链表的尾指针作为返回值。

PNode  Move_Odd_Even(LinkList tail)
{PNode head=tail->next, pre=head->next, q=pre->next;free(head);    //释放原链表的头指针,因为头指针无数据LinkList head1=(LinkList)malloc(sizeof(struct Node));PNode pre1=head1;    //pre1指针随着新插入的节点移动,便于进行尾插法LinkList head2=(LinkList)malloc(sizeof(struct Node));PNode pre2=head2;    //pre2指针随着新插入的节点移动,便于进行尾插法while(q!=head->next)    //原链表是循环链表,当q遍历到原来pre的位置(首元节点)时,遍历结束{if (pre->data%2==0)    //判断元素是否为偶数{pre->next=pre1->next;pre1->next=pre;pre1=pre1->next;}else    //若不是偶数,则为奇数{pre->next=pre2->next;pre2->next=pre;pre2=pre2->next;}pre=q;q=q->next;     //pre始终保持在q的前面}
//将head1链表和head2链表合成一个新的单循坏链表head1=head1->next;  //head1链表在后,不需要其头结点pre2->next=head1;    //两个链表相连接pre1->next=head2;    //形成循坏return pre1;               //返回新循坏链表的尾指针
}

解法二:

该程序的主要思想在于:

1、遍历栈,找到偶数

2、利用尾插法将偶数插入队尾


#include<stdio.h>
#include<stdlib.h>typedef int DataType; 
struct Node 
{DataType      data; struct Node*  next;  
};
typedef struct Node  *PNode;    
typedef struct Node  *LinkList;   LinkList CreateList_Tail_loop()
{LinkList head = (LinkList)malloc(sizeof(struct Node));PNode cur = NULL;PNode tail = head;DataType data;scanf_s("%d", &data);while (data != -1){   cur = (struct Node*)malloc(sizeof(struct Node));cur->data = data;tail->next = cur;tail = cur;scanf_s("%d", &data);}tail->next = head;return tail;
}
PNode  Move_Odd_Even(LinkList tail)
{PNode pre = tail->next;PNode head = tail->next;PNode P2 = NULL;PNode p = pre->next;PNode temp = (struct Node*)malloc(sizeof(struct Node));temp->data = 0;tail->next = temp;temp->next = head;tail = temp;while(p->data){if(p->data%2 ==0){P2 = p;p = p->next;pre->next = p;tail->next = P2;tail = P2;}else{   p = p->next;pre = pre->next;}}pre->next = temp->next;tail->next = head;free(temp);return tail;
}void print(LinkList tail)    
{PNode  head = tail->next;PNode p = head->next;while (p != head){printf("%d ", p->data);p = p->next;}
}void DestoryList_Link(LinkList tail)
{PNode pre = tail->next;PNode p = pre->next;while (p != tail){free(pre);pre = p;p = pre->next;}free(pre);free(tail);
}int main()
{LinkList tail = NULL;LinkList p = NULL;tail = CreateList_Tail_loop();p = Move_Odd_Even(tail);print(p);DestoryList_Link(tail);return 0;
}

7-1 多项式的加法

用链表表示多项式,并实现多项式的加法运算

输入格式:

输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。

输出格式:

对每一组输入,在一行中输出POLYA+POLYB和多项式的系数和指数。

输入样例:

5,0 2,1 1,6 8,15 0,0
-2,1 3,6 4,8 0,0

输出样例:

5,0 4,6 4,8 8,15 

解法一:

本题主要思路:
1.建立两个头指针分别为head1和head2链表,链表每一个节点分别记录每一个多项式的系数coef和指数exp。
2.preA遍历链表head1,preB遍历链表head2。
3.建立一个只有一个头节点的链表head,逐步遍历链表head1和head2。分别有如下三种情况:
①preA->exp<preB->exp,将节点preA利用尾插法插入链表head。
②preB->exp<preA->exp,将节点preB利用尾插法插入链表head。
③preB->exp=preA->exp,这种情况分为两种:
当preA->coef+preB->coef=0时,释放节点preA和preB。
当preA->coef+preB->coef≠0时:将多项式指数相同的项的系数相加,记录在preA,并利用尾插法将preA节点插如链表head。
#include<stdio.h>
#include<stdlib.h>
struct tagNode
{float coef;     //系数coefficientint exp;         //指数exponentstruct tagNode *next;  //指针域 
};typedef struct tagNode Node;
typedef struct tagNode *PNode;void insertList(PNode head,PNode pnode)
{PNode pPre = head;while(pPre->next != NULL){if(pPre->next->exp>pnode->exp)   //链表中节点pPre->next的指数>新加入节点pnode的指数{                                                       //将新节点pnode插入到pPre之后pnode->next = pPre->next;pPre->next = pnode;break;}else     //链表中节点pPre->next的指数≤新加入节点pnode的指数,继续往后查找{pPre = pPre->next;}}if(pPre->next == NULL)     //新加入节点pnode的指数较大,放在链表最后{pPre->next = pnode;}
}void CreateList(PNode head)
{int exp;float coef;PNode pTemp = NULL;head->next = NULL;scanf("%f,%d",&coef,&exp);while(coef != 0 || exp != 0){pTemp = (PNode)malloc(sizeof(struct tagNode));pTemp->coef = coef;pTemp->exp = exp;pTemp->next = NULL;insertList(head, pTemp);scanf("%f, %d", &coef, &exp);}
}void printLinkedList(PNode head)
{PNode temp = head->next;while(temp != NULL){printf("%0.0f,",temp->coef);printf("%d ",temp->exp);temp = temp->next;}printf("\n");
}void Add_Poly(PNode pa,PNode pb)
{PNode p = pa->next;    //链表1,和多项式的结果放在链表1中 PNode q = pb->next;PNode pre = pa;PNode u;float x;        //临时变量 while(p != NULL && q != NULL){if(p->exp < q->exp)  //比较链表1和链表2当前节点的指数大小,链表1也是存放结果的地方{pre = p;p = p->next; //p指向要比较的下一个节点,pre最终指向结果链表的最后一个节点}else if(p->exp == q->exp) //假如链表1和链表2的指数相等,则要系数相加{x = p->coef + q->coef;if(x != 0) //相加后的系数不是0,保留上一个节点就好了{p->coef = x;pre = p; } else    //相加后系数为0,不需要保留任何一个节点,删除链表1的节点{pre->next = p->next;free(p); }p=pre->next;     //p指向下一个节点//下面是进行链表2的删除工作u = q;q = q->next;free(u); }else  //如果链表2当前节点指数小,把链表2的当前节点加入到链表1中{u = q->next;q->next = p;pre->next = q;pre = q;q = u; }}if(q)        //如果链表2比链表1长,需要把链表2多余的部分加入到结果链表中;
//如果链表1比链表2长则不需要任何操作。{pre->next = q; }free(pb);
}	int main()
{PNode head1 = (PNode)malloc(sizeof(struct tagNode));PNode head2 = (PNode)malloc(sizeof(struct tagNode));CreateList(head1);CreateList(head2);Add_Poly(head1,head2);printLinkedList(head1);return 0;
}

解法二:

本题主要思路:
1.建立两个头指针分别为head1和head2链表,链表每一个节点分别记录每一个多项式的系数coef和指数exp。
2.preA遍历链表head1,preB遍历链表head2。
3.建立一个只有一个头节点的链表head,逐步遍历链表head1和head2。分别有如下三种情况:
①preA->exp<preB->exp,将节点preA利用尾插法插入链表head。
②preB->exp<preA->exp,将节点preB利用尾插法插入链表head。
③preB->exp=preA->exp,这种情况分为两种:
当preA->coef+preB->coef=0时,释放节点preA和preB。
当preA->coef+preB->coef≠0时:将多项式指数相同的项的系数相加,记录在preA,并利用尾插法将preA节点插如链表head。
#include<stdio.h>
#include<stdlib.h>typedef int DataType; 
struct Node
{DataType	  dataX,dataY;  struct Node*  next;  
};
typedef struct Node  *PNode;     
typedef struct Node  *LinkList;  LinkList SetNullList_Link() 
{LinkList head = (LinkList)malloc(sizeof(struct Node));if (head != NULL)head->next = NULL;elseprintf("alloc failure");return head; 
}void CreateList(struct Node* head)
{PNode p = NULL; PNode q = head;int dataX,dataY;scanf("%d,%d", &dataX,&dataY);while (dataX != 0 || dataY != 0) {   p = (struct Node*)malloc(sizeof(struct Node));p->dataX = dataX;p->dataY = dataY;p->next = NULL;q->next = p;q = p;scanf("%d,%d", &dataX,&dataY);}
}PNode mergeNDeduplicateList(PNode POLYA, PNode POLYB)
{PNode A,B,pre;B = POLYB->next;while(B != NULL){pre = POLYA;A = pre->next;while(A != NULL){if(A->dataY == B->dataY){A->dataX = A->dataX + B->dataX;if(A->dataX == 0){pre->next = A->next;free(A);}POLYB->next = B->next;free(B);B = POLYB->next;break;}else if(A->dataY > B->dataY){POLYB->next = B->next;B->next = A;pre->next = B;B = POLYB->next;break;}pre = pre->next;A = pre->next;}}PNode StopNode;StopNode = POLYA;while(StopNode != NULL){pre = POLYA;A = pre->next;while(A->next != NULL){if(A->dataY > A->next->dataY){pre->next = A->next;PNode temp;temp = A->next;A->next = temp->next;temp->next = A;}pre = pre->next;A = pre->next;}StopNode = StopNode->next;}return POLYA;
}void print(LinkList head)    
{PNode p = head->next;while (p != NULL){printf("%d,%d ", p->dataX,p->dataY);p = p->next;}
}void DestoryList_Link(LinkList head)
{PNode  pre = head; PNode p = pre->next;while (p) {free(pre);pre = p;p = pre->next;}free(pre);
}int main()
{LinkList POLYA,POLYB;POLYA = SetNullList_Link();POLYB = SetNullList_Link();CreateList(POLYA);CreateList(POLYB);POLYA = mergeNDeduplicateList(POLYA,POLYB);print(POLYA);DestoryList_Link(POLYA);return 0;
}

相关文章:

PTA数据结构作业一

6-1 链表的插入算法 本题要求实现一个插入函数&#xff0c;实现在链表llist中的元素x之后插入一个元素y的操作。 函数接口定义&#xff1a; int InsertPost_link(LinkList llist, DataType x, DataType y); 其中 llist是操作的链表&#xff0c;x是待插入元素y的前驱节点元素…...

2024年总结【第五年了】

2024年总结 北国绕院扫雪&#xff0c;南方围炉烹茶&#xff0c;且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴&#xff0c;誊写一段回忆&#xff0c;还以光阴一段副本。 那么你要听一支新故事吗&#xff1f;第五年总结的片碎。 衣单天寒&#xff0c;走趟流星孤骑&#xf…...

java实现一个kmp算法

1、什么是KMP算法 Kmp 算法是由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;改进字符串匹配的算法&#xff1b; Kmp 算法的核心是利用匹配失败的信息&#xff0c;尽量减少模式串与主串的匹配次数&#xff0c;以达到 快速匹配的目的&#xff1b; Kmp 算法的时…...

强化学习方法分类详解

强化学习方法分类详解 引言 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种通过智能体与环境互动来学习如何做出最佳决策的方法。根据不同的优化中心、策略特性、环境模型、奖励函数、动作空间类型以及行为策略和目标策略的一致性&#xff0c;RL可以分为…...

雅思真题短语(二十八)

真题短语收录在合辑。 541法律官员 work as a solicitor 542前卫 a radical and expensive scheme 543反对者们 objectors 544破坏 demolishing buildings 545蒸汽机车 steam locomotives 546冷凝 steam could be condensed 547烟雾 smoke and fumes 548通风井 ventilation sh…...

在Linux系统中使用字符图案和VNC运行Qt Widgets程序

大部分服务器并没有GUI&#xff0c;运行的是基础的Linux系统&#xff0c;甚至是容器。如果我们需要在这些系统中运行带有GUI功能的Qt程序&#xff0c;一般情况下就会报错&#xff0c;比如&#xff1a; $ ./collidingmice qt.qpa.xcb: could not connect to display qt.qpa.plu…...

Python基于EasyOCR进行路灯控制箱图像文本识别项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着城市化进程的加快&#xff0c;智能城市建设成为了现代社会发展的重要方向。路灯作为城市基础设…...

Github 2024-12-28 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-12-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1Python项目1egui: 一个简单、快速且高度可移植的 Rust GUI 库 创建周期:1903 天开发语言:Rust协议类型:Apache Li…...

提升生产力工具

VSCODE插件 干货&#xff1a;用好这13款VSCode插件&#xff0c;工作效率提升10倍 - 程序员柠檬 - 博客园 Sourcetrail Sourcetrail 是一个开源且免费的源码阅读工具&#xff0c;以其强大的代码导航、可视化及跨平台支持特性&#xff0c;成为开发者理解复杂代码库的得力助手。…...

【蓝桥杯——物联网设计与开发】系列前言

前言 本系列博客是博主为准备2024年第十五届蓝桥杯大赛物联网设计与开发赛道而写&#xff0c;经过4个月学习备战&#xff0c;最终获得全国一等奖。 从第十六届蓝桥杯大赛开始&#xff0c;物联网赛道更换竞赛实训平台。之前的博客&#xff0c;可以借鉴代码思想&#xff0c;但引脚…...

【Java基础】02.Java数据类型

目录 Java 数据类型 3.1 java程序中 “” 号的使用 3.2 java中的数据类型 3.2.1 基本数据类型&#xff1a;数值型 &#xff08;1&#xff09;整数类型 &#xff08;2&#xff09;浮点&#xff08;小数&#xff09;类型 3.2.2 基本数据类型&#xff1a;字符型 3.2.3 基本…...

Python爬虫(一)- Requests 安装与基本使用教程

文章目录 前言一、简介及安装1. 简介2. 安装 Requests2.1 安装2.2 检查安装是否成功 二、使用 Requests 发送 HTTP 请求1. 发送 GET 请求2. 发送 POST 请求3. 发送 PUT 请求4. 发送 DELETE 请求5. 发送 HEAD 请求6. 发送 OPTIONS 请求 三、传递参数1. GET 请求传递 URL 参数1.1…...

线段树保姆级教程

买水果 Description 水果姐今天心情不错&#xff0c;来到了水果街。 水果街有n家水果店&#xff0c;呈直线结构&#xff0c;编号为1~n&#xff0c;每家店能买水果也能卖水果&#xff0c;并且同一家店卖与买的价格一样。 学过oi的水果姐迅速发现了一个赚钱的方法&#xff1a…...

logback之自定义过滤器

logback有两种过滤器&#xff0c;一种是context中的过滤器叫TurboFilter&#xff0c;是一个全局的过滤器&#xff0c;会影响所有的日志记录。另一种是Appender中的过滤器&#xff0c;只对所在的append有效。两者大同小异&#xff0c;这里我们以Appender的过滤器为例。 &#x…...

如何用CSS3创建圆角矩形并居中显示?

在网页设计中&#xff0c;圆角矩形因其美观和现代感而被广泛使用&#xff0c;居中显示元素也是一个常见的需求。今天&#xff0c;我们将学习如何使用CSS3的border-radius属性来创建圆角矩形&#xff0c;并将其居中显示在页面上。 如果你正在学习CSS&#xff0c;那么这个实例将非…...

Java 开发中的指定外部 Jar 路径详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云/阿里云/华为云/51CTO&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互…...

python爬虫--小白篇【selenium自动爬取文件】

一、问题描述 在学习或工作中需要爬取文件资源时&#xff0c;由于文件数量太多&#xff0c;手动单个下载文件效率低&#xff0c;操作麻烦&#xff0c;采用selenium框架自动爬取文件数据是不二选择。如需要爬取下面网站中包含的全部pdf文件&#xff0c;并将其转为Markdown格式。…...

TI毫米波雷达原始数据解析之Lane数据交换

TI毫米波雷达原始数据解析之Lane数据交换 背景Lane 定义Lane 确认确认LVDS Lane 数量的Matlab 代码数据格式参考 背景 解析使用mmWave Studio 抓取的ADC Data Lane 定义 芯片与DCA100之间的数据使用LVDS接口传输&#xff0c;使用mmWave Studio 配置过程中有一个选项是LVDS L…...

overscroll-behavior-解决H5在ios上过度滚动的默认行为

1. 问题 开发H5的过程中&#xff0c;经常会有android和ios两边系统需要兼容的情况。在ios上一直有个问题是当H5内容触及到页面顶部或底部时&#xff0c;还是可以被人为的往下或往下拉动界面。当然可能有的情况是比较适用的&#xff0c;比如你往下拉动&#xff0c;然后在导航栏…...

Nacos配置中心总结

Nacos配置中心总结 Nacos配置文件的加载顺序和优先级 加载顺序 nacos作为配置中心时&#xff0c;需要在bootstrap.yml文件中添加nacos config相关的配置&#xff0c;这样系统启动时就能先去拉取nacos server上的配置了。拉取过来后会和本地配置文件进行合并。 bootstrap.ym…...

rouyi(前后端分离版本)配置

从gitee上下载&#xff0c;复制下载地址&#xff0c;到 点击Clone&#xff0c;下载完成&#xff0c; 先运行后端&#xff0c;在运行前端 运行后端&#xff1a; 1.配置数据库&#xff0c;在Navicat软件中&#xff0c;连接->mysql->名字自己起(rouyi-vue-blog),用户名roo…...

超大规模分类(一):噪声对比估计(Noise Contrastive Estimation, NCE)

NCE损失对应的论文为《A fast and simple algorithm for training neural probabilistic language models》&#xff0c;发表于2012年的ICML会议。 背景 在2012年&#xff0c;语言模型一般采用n-gram的方法&#xff0c;统计单词/上下文间的共现关系&#xff0c;比神经概率语言…...

Windows 下安装 triton 教程

目录 背景解决方法方法一&#xff1a;&#xff08;治标不治本&#xff09;方法二&#xff1a;&#xff08;triton-windows&#xff09;- 安装 MSVC 和 Windows SDK- vcredist 安装- whl 安装- 验证 背景 triton 目前官方只有Linux 版本&#xff0c;若未安装&#xff0c;则会出…...

复盘与导出工具最新版9.15重磅发布-全新UI兼容所有windows系统

在9.11版本的基础上大更新: 1.应付费用户需求修复当更换明亮风格时软件超过电脑屏幕的bug&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 2.支持所有windows版本,32/64位的win xp/7/8/10/11 3.修复开盘啦涨停原因排序bug 4.全新ui风格 5提前爆料:.9.2版本的分开…...

家用电器销售系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…...

NRF24L01模块通信实验

NRF24L01简要介绍 这里主要介绍模块的最重要的参数&#xff0c;废话就不多介绍了。   该模块是一款无线通信模块&#xff0c;一个模块即可同时具备发射和接收数据的功能&#xff0c;但是要想实现通信必须使用两个模块之间才能进行通信。NRF24L01模块使用的总线控制方式为SPI总…...

2024年12月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(一共 15 个题目,每题 2 分,共 30 分) 第 1 题 2024 年 10 月 8 日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰霍普菲尔德(John J. …...

【MySQL系列】VARCHAR为啥一般是255

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

图文教程:使用PowerDesigner导出数据库表结构为Word/Html文档

1、第一种情况-无数据库表&#xff0c;但有数据模型 1.1 使用PowerDesigner已完成数据建模 您已经使用PowerDesigner完成数据库建模&#xff0c;如下图&#xff1a; 1.2 Report配置和导出 1、点击&#xff1a;Report->Reports&#xff0c;如下图&#xff1a; 2、点击&…...

Coroutine 基础五 —— Flow 之 Channel 篇

1、Channel 与 Flow 简介与对比 所有知识都可总结为一个字 —— 流。包括数据流、事件流、状态流。 开发中最常用的 StateFlow 提供状态订阅。可以将一些信息包进 StateFlow 中进行保存。比如界面上显示的字符串&#xff0c;或者系统级别的信息&#xff0c;如用户状态。装进 …...