176 lines
2.9 KiB
Markdown
176 lines
2.9 KiB
Markdown
# 原创
|
||
: 第一章 绪论
|
||
|
||
# 第一章 绪论
|
||
|
||
## 1.代码规范
|
||
|
||
```
|
||
//功能函数实现
|
||
void Reverse(int R[],int l,int r)
|
||
{
|
||
int i,j;
|
||
int temp;
|
||
for(i=l,j=r;i<j;++i,--j)
|
||
{
|
||
temp=R[i];
|
||
R[i]=R[j];
|
||
R[j]=R[i]
|
||
}
|
||
}
|
||
//函数接口
|
||
void RCR(int R[],int n,int p)
|
||
{
|
||
if(p<=0||p>=0)cout<<"ERROR"<<endl;
|
||
else
|
||
{
|
||
Reverse(R,0,p-1);
|
||
Reverse(R,p,n-1);
|
||
Reverse(R,0,n-1);
|
||
}
|
||
}
|
||
//其余的一些东西可以不用写
|
||
```
|
||
|
||
## 2.C/C++基础
|
||
|
||
### 2.1 数据类型
|
||
|
||
```
|
||
//结构型
|
||
typedef struct
|
||
{
|
||
int a;
|
||
char b;
|
||
float c;
|
||
}TypeA;
|
||
|
||
//链表结点定义
|
||
typedef struct Node
|
||
{
|
||
int date;
|
||
struct Node *next;
|
||
}Node;
|
||
|
||
//二叉树结点定义
|
||
typedef struct BTNode
|
||
{
|
||
int date;
|
||
struct BTNode *lchirld;
|
||
struct BTNode *rchirld;
|
||
}BTNode;
|
||
|
||
//制作结点
|
||
//第一种严格要求自己不能用
|
||
BTNode BT;
|
||
//第二种经常用
|
||
BTNode *BT;
|
||
BT=(BTNode*)malloc(sizeof(BTNode));
|
||
|
||
//类似的申请动态数组空间
|
||
//下面是申请数组元素为int型,长度为n
|
||
int *p;
|
||
p=(int *)malloc(n * sizeof(int));
|
||
```
|
||
|
||
### 2.2 函数
|
||
|
||
```
|
||
//被传入的函数的参数不会发生改变
|
||
int a;
|
||
void f(int x)
|
||
{
|
||
++x;
|
||
}
|
||
a = 0;
|
||
f(a); //a=0
|
||
|
||
//被传入的参数发生改变,引用
|
||
void f(int &x)
|
||
{
|
||
++x;
|
||
}
|
||
|
||
//要求传入的指针发生改变
|
||
void f(int *&x)
|
||
{
|
||
++x;
|
||
}
|
||
|
||
//数组做参数用不用引用效果一样(只针对考研),数组元素改变
|
||
//一维数组做参数
|
||
void f(int x[],int n)
|
||
{
|
||
...;
|
||
}
|
||
|
||
//二维数组做参数,maxSize是已经定义了的常数
|
||
void f(int x[][maxSize],int n)
|
||
{
|
||
...;
|
||
}
|
||
|
||
//结构体参数改变
|
||
void insert(Sqlist &L,int x)
|
||
{
|
||
int p,i;
|
||
p = LocateElem(L,x);
|
||
for(i = L.length-1;i>=p;--i)
|
||
L.date[i+1]=L.date[i];
|
||
L.date[p] = x;
|
||
++(L.length);
|
||
}
|
||
|
||
//C是一个指向一个链表表头的指针,不代表整个链表
|
||
//C不会变,但除C以外的所有结点都可能变化
|
||
//下面是删除链表中第一个出现x的结点
|
||
int SearchAndDelete(LNode *C,int x)
|
||
{
|
||
LNode *p,*q;
|
||
p = C;
|
||
whlie(p->next!=NULL)
|
||
{
|
||
if(p->next->date==x)break;
|
||
p = p->date;
|
||
}
|
||
if(p->next==NULL)return 0;
|
||
else
|
||
{
|
||
q = p->next;
|
||
p->next=p->next->next;
|
||
free(q);
|
||
return 1;
|
||
}
|
||
}
|
||
|
||
//C指针可能传进来的是空指针,需要它指向表头结点,故使用引用
|
||
void merge(LNode *A,LNode *B,LNode *&C)
|
||
{
|
||
LNode *p=A->next;
|
||
LNode *q=B->next;
|
||
LNode *r;
|
||
C = A;
|
||
C->next = NULL;
|
||
free(B);
|
||
r = C;
|
||
while(p!=NULL&&q!=NULL)
|
||
{
|
||
if(p->date<=q->date)
|
||
{
|
||
r->next=p;
|
||
p=p->next;
|
||
r=r->next;
|
||
}
|
||
else
|
||
{
|
||
r->next=q;
|
||
q=q->next;
|
||
r=r->next;
|
||
}
|
||
}
|
||
r = r->next;
|
||
if(!p=NULL)r->next=p;
|
||
if(!q=NULL)r->next=q;
|
||
}
|
||
```
|