标签:
1 #include
2 #include
3 #include
4 structdulnode5 {6 intdata;7 struct dulnode *next,*prev;8 };9 typedef structdulnode DULNODE;10 typedef DULNODE *DULINKLIST;11 intmain()12 {13 DULNODE fuc_creat(DULNODE NUM);14 intfuc_print(DULNODE NUM);15 intfuc_compe(DULNODE NUM1,DULNODE NUM2);16 intfuc_plus(DULNODE NUM1,DULNODE NUM2);17 intfuc_sub(DULNODE NUM1,DULNODE NUM2);18 DULNODE NUM1={NUM1.data=0};19 NUM1=fuc_creat(NUM1);20 fuc_print(NUM1);21 return 1;22 }23 DULNODE fuc_creat(DULNODE NUM)24 {25 DULINKLIST p,q;26 int i=0,block=0,j=1;27 int temp[100];28 char str[101];29 gets(str);30 q=&NUM;31 for(i=0;i<100&&str[i]!=‘\0‘;i++)32 {33 if(str[i]‘9‘)printf("input error");34 temp[i]=str[i]-‘0‘;35 //printf("test_1 %d\n",temp[i]);
36 }37 for(i=i-1;i>-1;i--)38 {39 q->data=q->data+j*temp[i];40 block++;41 j=j*10;42 if(block%4==0)43 {44 p=(DULNODE *)malloc(sizeof(DULNODE));45 p->data=0;46 p->next=q;47 p->prev=&NUM;48 q->prev=p;49 NUM.next=p;50 q=p;51 j=1;52 }53 //printf("test_2%d\n",q->data);
54 }55 returnNUM;56 }57 intfuc_print(DULNODE NUM)58 {59 printf("test_1 print\n");60 DULINKLIST q;61 q=NUM.next;62 do
63 {64 printf("%d",q->data);65 q=q->next;66 }while(q==&NUM);67 printf("test_2 print\n");68 return 1;69 }
vim+gcc+gdb大法好;linux下编程妙。
插播个连接:vim命令+gdb命令http://pan.baidu.com/s/1pJKChHT 文件来自百度文库,可自行查找
1:学会调试。自从学了这招,再也不在程序里插播printf(test")代码啦!
2:malloc函数 头文件 使用 p=(int */*要返回的类型,强制转换给p*/)malloc(n/*分配几个*/*sizeof(int/*分配给p的长度*/))。malloc开辟的空间会使p指向新开辟的地址,从而失去原来的指向,有必要的话请提前保留p的信息。代码44行
3:函数类型定义 定义为int型则该函数return的值为该类型。代码23定义,代码55返回,代码19接收返回值。
4:结构体指针指向结构体内数据 q->data (*q).data推荐前面那个写法。
5:结构体赋初值 可以写构造函数(c++?)或者在定义的时候直接赋值,每个元素间用 逗号 连接 struct delnode NUM1={NUM1.data=0} 代码18行
6:软件工程思维 需要提前想好软件大体怎么写,什么函数实现什么功能。likes 吾等弱鸡状态下,更需如此。建议先写main函数,这样调试时省力。
标签: