csdn_spider/blog/ds19991999/原创-- 第一章 绪论.md

176 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 原创
第一章 绪论
# 第一章 绪论
## 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;
}
```