標籤:
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 do63 {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函數,這樣調試時省力。
c語言 用鏈表實現 超長整型加減法 (doing)