周总学习代码
快速排序
在一串数中,先选一个数作为基准数,之后将比基准数小的数放在基准数左边,将比基准数大的数放在基准数右边,之后再处理两边的序列。以此类推,直到序列由升序(或降序)排序。
# include <stdio.h>
int a[101],n;
void quicksort(int left,int right){
int i,j,t,temp;
if(left>right)
return;
temp = a[left]; //temp中存的为基准数
i = left;
j = right;
while(i != j){
//先从右往左找
while(a[j]>=temp && i<j)
j--;
//再从左往右找
while(a[i]<=temp && i<j)
i++;
//交换两个数在数组中的位置
if(i<j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//将基准数归位
a[left] = a[i];
a[i] = temp;
quicksort(left,i-1); //继续处理左边,递归过程
quicksort(i+1,right); // 继续处理右边,递归过程
return;
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
quicksort(0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
getchar();getchar();
return 0;
}
leedcode 第19题.删除链表的倒数第N个节点
建立三个结构体指针,f为快指针,p为指向待删除节点,q为待删除节点的前驱节点
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
//如果链表结点个数为0,直接返回
if(n==0){
return head;
}
//f为快指针,p用于指向待删除结点,q指向待删除结点的前驱结点。
struct ListNode *f=NULL,*p=NULL,*q=NULL;
//先让快指针后跑n个结点
for(f=head;n>0;f=f->next,n--);
p=head;
//然后让快指针和慢指针一起向后跑,q为p的联动指针
//当快指针跑到NULL时停止,这时候快指针一定指向待删除结点
while(f){
q=p;
p=p->next;
f=f->next;
}
//如果要删除的结点为头结点,需要单独处理。否则,利用slowq->next=slowp->next即可删除结点
if(p==head){
head=head->next;
}else{
q->next=p->next;
free(p);
}
return head;
}
linux命令
ls:显示目录和文件的信息
ls -l 显示全部信息
ls -al 显示全部信息(包括以 ’ . ’ 开头的隐藏文件)
mv:移动或重命名文件或目录
rm:删除文件或目录
touch:创建空文件或更新文件时间
pwd:.查看当前路径
cd:切换路径
mkdir:创建新目录(mkdir 加 -p 可以同时创建多个目录)
cat:查看文件内容