自打在知乎上看到思否這個平臺後,就總想寫點什麼;也想與更多的人交流,學一點東西。
學校數據結構授課用的教材是嚴蔚敏老師的《數據結構(C語言版)》,教材將介於僞碼和C語言之間的類C語言做爲描述工具講解算法,在實際學習中,仍是須要咱們把代碼轉換成C語言程序,編譯經過。這個過程才能幫助更好地理解算法。
我開通博客的目的也在於此,將本身復現的代碼和完成的課後習題記錄下來,與你們分享交流;偶爾也分享一些本身對一些開源項目的學習理解。
第一次的內容很是簡單,順序表的基本操做。主要包括了:c++
功能簡單,編譯時遇到的困難也較少。算法
#include<stdio.h> #include<stdlib.h> #include "malloc.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int Status; typedef struct{ int *elem; int length; int listsize; }SqList; Status InitList_Sq(SqList &L){ //構造空表 L.elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int)); if(!L.elem)exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; } Status ListInsert_Sq(SqList &L,int i){ //在順序表的第i個位置插入鍵盤輸入的數 int* p,* q,e; if(i < 1 || i > L.length + 1)return ERROR; if(L.length >= L.listsize){ int* newbase = (int*)realloc(L.elem,(L.listsize + LISTINCREMENT) * sizeof(int)); if(!newbase)exit(OVERFLOW); L.elem = newbase; L.listsize += LISTINCREMENT; } q = &(L.elem[i-1]); for(p = &(L.elem[L.length-1]);p >= q;--p) *(p+1) = *p; scanf("%d",&e); //鍵盤輸入值賦給e *q = e; ++ L.length; return OK; } Status List_Print(SqList L){ //打印順序表中的數 for(int r = 0;r < L.length;r++)printf("%d ",L.elem[r]); printf("\n"); } Status List_Search(SqList L){ //查找順序表 int i; scanf("%d",&i); if(i < 1 || i > L.length + 1)return ERROR; printf("您查找的數是:%d \n",L.elem[i-1]); } Status ListDelete_Sq(SqList &L){ //刪除指定的數,並用e返回 int* p,* q; int i,e; scanf("%d",&i); if(i < 1 || i > L.length + 1)return ERROR; p = &(L.elem[i-1]); e = *p; q = L.elem + L.length - 1; for(++p;p <= q;++p)*(p-1) = *p; --L.length; printf("%d被刪除了\n",e); return OK; } int main() { SqList L; InitList_Sq(L); printf("請爲順序表輸入4個整數:\n"); for(int a = 1;a <= 4;a++)ListInsert_Sq(L,a); printf("現有的順序表爲:\n"); List_Print(L); printf("請輸入要查找的位置\n"); List_Search(L); printf("請輸入插入的位置和數(用換行分開):\n"); int a; scanf("%d",&a); ListInsert_Sq(L,a); printf("現有的順序表爲:\n"); List_Print(L); printf("請輸入要刪除的位置\n"); ListDelete_Sq(L); printf("現有的順序表爲:\n"); List_Print(L); return 0;}
所用的編譯器是dev c++.數據結構