1、尾插
void push_back(struct Node *pHead,int n)
{
if(isEmpty(pHead))
{
push_front(pHead,n);
}
else
{
struct Node *p = pHead->next;
struct Node *pNew = malloc(sizeof(struct Node));
while(p->next != NULL)
{
p = p->next;
}
p->next = pNew;
pNew->next = NULL;
pNew->data = n;
}
}
//头删
void pop_front(struct Node *pHead)
{
if(!isEmpty(pHead))
{
struct Node *p = pHead->next;
pHead->next = p->next;
free(p);
}
}
//尾删
void pop_back(struct Node *pHead)
{
if(size(pHead) >= 2)
{
struct Node *p = pHead->next;
while(p->next->next != NULL)
{
p = p->next;
}
free(p);
p->next = NULL;
}
else
{
pop_front(pHead);
}
}
//清除
void clear(struct Node *pHead)
{
while(!isEmpty(pHead))
{
pop_front(pHead);
}
}
2、枚举
如果一个变量只有几种可能的值,则可以定义为枚举类型,将变量一一列举出来,变量的值只限于列举出来的值的范围内。
3、typedef 定义类型
声明新的类型名来代替已有类型名
4、位运算
& :参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为 1 ,则该位的结果值为 1 ;否则为0;
| :两个相应的二进制中只要有一个为1,该位结果值为1。
^ :若参加运算的两个二进制位同号,则结果为0(假);异号则为1(真)。
~ :用来对一个二进制数按位取反。
<< :将一个数的各二进制位全部左移若干位。
>> :各二进制右移若干位。
右移需注意符号位问题。对无符号数 ,右移时左移高位移入0;有符号数,正数移入0,负数移入1。
先后顺序从上到下: