黑马程序员--C语言入门疑难点----进制,文件

来源:互联网 发布:javascript插件是什么 编辑:程序博客网 时间:2024/05/18 09:43

------<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;

}


 


0 0
原创粉丝点击