C语言补充链表位运算.docVIP

  • 3
  • 0
  • 约4.92千字
  • 约 7页
  • 2017-06-07 发布于重庆
  • 举报
C语言补充链表位运算

链表 //对链表的删除结点操作 struct Student *del(struct Student *head,long num) { struct Student *p1,*p2; if(head= =NULL) { printf(list null\n) goto end;} p1=head; while(num!=p1-num p1-next!=NULL) //p1指向的不是所要找的结点,并且后面还有结点 {p2=p1;p1=p1-next;} //p1后移一个结点 if(num= =p1-num) //找到了 { if(p1= =head) head=p1-next; //若p1指向的是表结点,把第二个结点地址赋予head else p2-next=p1-next; printf(delete:%ld\n,num); n--; } else printf(%ld not been found!\n,num); end:return(head); } //对链表的插入结点操作 struct Student *insert(struct Student *head,struct Student *stud) {struct Student *p0,*p1,*p2; p1=head; //使p1指向第一个结点(首) p0=stud; //p0指向要插入的结点 if(head= =NULL)//原来的链表是空表 { head=p0;p0-next=null;}//使p0指向的结点作为头结点 else while((p0-nump1-num)(p1-next!=NULL)) { p2=p1;//使p2指向刚才p1指向的结点 p1=p1-next;}//p1后移一个结点 if(p0-num=p1-num) {if(head= =p1) head=p0;//插到原来第一个结点之前 else p2-next=p0;//插到p2指向的结点之后 p0-next=p1;} else { p1-next=p0;p0-next=NULL;}//插到最后的结点之后 n++; return head; } 位运算 前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。 位运算符C语言提供了六种位运算符: 按位与 | 按位或 ^ 按位异或 ~ 取反 左移 右移 按位与运算 按位与运算符是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。 例如:95可写算式如下: (9的二进制补码) (5的二进制补码) (1的二进制补码) 可见95=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作a255运算( 255 的二进制数为0000000011111111)。 【例12.1】 main(){ int a=9,b=5,c; c=ab; printf(a=%d\nb=%d\nc=%d\n,a,b,c); } 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: (十进制为13)可见9|5=13 【例12.2】 main(){ int a=9,b=5,c; c=a|b; printf(a=%d\nb=%d\nc=%d\n,a,b,c); } 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: (十进制为12) 【例12.3】 main(){

文档评论(0)

1亿VIP精品文档

相关文档