------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
关于进制转换,我觉得挺好玩的不就是几个公式了,就如我第一次所学的 二 进制转换为十 进制,十 进制转换为 二 进制,那样的类型其实也挺有趣的 转化为 十 进制数,如哦我所给的一个 二 进制数“101101001”我就设 十 进制数是Z首先有个公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0把只是X换为2,算出来的就是你所得到的此 二 进制数所对应的 十 进制数同理:如 八 进制数转换为 十 进制数就是把X换为8, 十六 进制数转换 十 进制数把X换为16,至于 二 进制数转化为 八 进制数更有意思;首先我引进一个例子:这是一个比较特殊的 二 进制数:111111111111
首先把这组数按三个数划分一组(从右开始划分):如,111,111,111,111 于结果是7777然后就分别把化为各组的数组转化为是进制数,最后进把你刚才算出的数按原来的顺序排起来,于是得到的结果就是你想要的那十六进制就是把数组中的每四个划分一组(从右开始划分的)如111111111111划分结果为1111,1111,1111, 方法与上面一样,于是它的结果是ff关于十进制转化二进制,八进制和十六进制,方法都是一样的同二进制方法雷同
链表:
链表是C语言中另外一个难题。牵扯到结点,动态分配空间等等。用结构作为链表的结点是非常合适的,例如:
struct node
{
int data;
struct node *next;
}
其中next是指向自身所在结构类型的指针,这样就可以把一个个结点相连,构成链表。
链表结构的一大优势就是动态分配存储,不会像数组一样必须在定义见确定大小,造成浪费。用malloc和free函数即可实现开辟和释放存储单元。其中,malloc的参数多用于sizeof运算符计算得到。
链表的基本操作有:正反向建立链表,输出链表;删除列表中结点;在链表中插入结点等等。
typedef struct node
{
char data;
struct node *next;
}NODE;
正向建立链表
NODE *create()
{
char ch=‘a’;
NODE *p,*h=null,*q=null;
while (ch<'z')
{
p=(NODE *)mallco(sizeof(NODE));
p->data =ch;
if(h==null)
h=p;
else q->next=p;
}
q->next=null;
return h;
}
逆向建立:
NODE *create()
{
char ='a';
NODE *p=,*h=null;
while(ch<'z')
{
p=(NODE *)mallco(sizeof(NODE));
p->data=ch;
p->next=h;
h=p;
ch++;
}
return h;
}
用递归实现链表逆序输入:
void output (NODE *h)
{
if(h!=null)
{
output(h->next);
printf("%d",h->data);
}
}
插入结点:
NODE *insert(NODE *h,int x)
{
NODE *next,*current=h;
while (current !=null&&(currnet->data)(x))
{
front = current;
current=currnet->next;
}
new =(NODE *)mallco(sizeof((NODE));
new->data=x;
new->next=current;
if(current==h)
h=new;
else front->next=new;
return h;
}