1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 struct dulnode 5 { 6 int data; 7 struct dulnode *next,*prev; 8 }; 9 typedef struct dulnode DULNODE; 10 typedef DULNODE * DULINKLIST; 11 int main() 12 { 13 DULNODE fuc_creat(DULNODE NUM); 14 int fuc_print(DULNODE NUM); 15 int fuc_compe(DULNODE NUM1,DULNODE NUM2); 16 int fuc_plus(DULNODE NUM1,DULNODE NUM2); 17 int fuc_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]<‘0‘||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 return NUM; 56 } 57 int fuc_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函数 头文件<stdlib.h> 使用 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函数,这样调试时省力。
时间: 2024-12-19 22:30:59