前段時間鼓搗Linux,學習了一些基礎性的東西,好比經常使用命令。如今準備開始學習Linux環境下的編程。重視基礎,先學習數據結構。參考教材是《嵌入式系統軟件設計中的數據結構》,這是嵌入式系統軟件設計基礎叢書中的一本,我的認爲不錯哈。結合了ucos中用到的數據結構例子來說。並且有C語言的實現,不是僞代碼。linux
開始學的是線性表,其中分爲順序表和鏈表。而對於順序表是用數組表示的。設計到的操做主要有刪除和插入。下面的代碼是一個總體對順序表的操做,包括建立表,刪除一個元素和插入一個元素。代碼在linux下調試經過。編程
數序表的操做:數組
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef struct { int data[MAXSIZE]; //存放數組元素 int last; //數組的最後一個元素的下標 }squeuelist; int main(void) { int choice, mount, i, dat, pos; squeuelist *l; while(1) { printf(" 線性順序表操做練習\n"); printf("1.建立一個順序表\n"); printf("2.插入數據\n"); printf("3.刪除數據\n"); printf("4.打印順序表\n"); printf("5.退出\n"); printf("請輸入你的選擇(1-5):"); scanf("%d",&choice); switch(choice) { case 1: printf("請輸入你要建立的元素個數:"); scanf("%d", &mount); if(mount>MAXSIZE) { printf("建立的個數大於規定範圍!"); break; } printf("請輸入數據:"); for(i=0; i<mount; i++) { scanf("%d",&l->data[i]); } l->last = mount-1; break; //插入操做 case 2: printf("請輸入要插入的元素值及所在位置(位置1表示元素0,依次類推):"); scanf("%d %d", &dat, &pos); if(l->last>MAXSIZE-1) { printf("空間溢出!\n"); break; } else if(pos<1 || pos>l->last+2) { printf("插入的位置非法!\n"); break; } else { for(i=l->last; i>=pos-1;i--) { l->data[i+1] = l->data[i]; } l->data[pos-1] = dat; l->last += 1; } break; //刪除操做 case 3: printf("請輸入你要刪除元素所在的位置(位置1表明元素0,依次類推):"); scanf("%d",&pos); if(pos<1 || pos>l->last+1) { printf("輸入的位置無效!\n"); break; } else { for(i=pos; i<=l->last; i++) { l->data[i-1] = l->data[i]; } l->last -= 1; } break; //打印輸出順序表 case 4: printf("順序表爲:"); for(i=0; i<=l->last; i++) { printf("%d ", l->data[i]); } printf("\n"); printf("順序表的個數爲:%d\n",l->last+1); break; //退出程序 case 5: exit(0); break; default: break; } } return 1; }
說說順序表的特色:數據結構
由於是新手,對VIM還不是很熟。不過通過對配置文件的改造一番,感受VIM仍是很不錯的,有點喜歡了。學習