寫在前面:唉,我們學校通訊工程大二不學資料結構,實在無奈,只能自己硬補一發了。我看的是耿國華的書,不是很有名,但是還是比較實用的,每章當中的每種資料結構的基本操作我都會用c語言自己實現一遍,但是後面的習題我會挑著做,基本就是把一章中最難的做掉,剩下的隨便吧,下學期的課會有演算法,自己也會多看一點演算法導論,就是這樣,開始更新吧,反正我已經開了三個分類了,但是我一定都會更新完的!當然這裡我主要以**為主。
這裡我先寫順序表的基本操作。
#define maxsize 1024
typedef struct linelist seqlist; //定義基本的資料結構
//以下主要宣告函式頭
int locate (seqlist l , int e);
int inslist (seqlist *l , int i , int e);
int dellist (seqlist *l , int i , int *e);
上面是seqlist.h檔案
#include "seqlist.h"
#include //定位操作
int locate (seqlist l , int e)
return -1;
}//插入操作
int inslist (seqlist *l , int i , int e)
if (l->off == (maxsize-1))
if (i <= l->off+1)
l->element[i-1] = e;
l->off++;
return 1;
}//刪除操作
int dellist (seqlist *l , int i , int *e)
*e = l->element[i-1];
if (i != l->off+1)
l->off--;
return 1;
}
上面是seqlist_op.c
#include #include "seqlist.h"
#include int main () ;
int i;
int *e = malloc (sizeof (int));
seqlist l;
l.off = -1;
for (i = 0 ; i < 10 ; i++)
inslist (&l , i+1 , array[i]);
for (i = 0 ; i < 10 ; i++)
printf ("the number %d is at %d\n" , i , locate (l , i));
for (i = 0 ; i < 10 ; i++)
dellist (&l , 1 , e);
printf ("the l.off is %d\n" , l.off);
}
上面是main.c主要用來測試基本操作的正確性
總結:順序表主要還是和之前的陣列還是有很大的聯絡的算得上是非常基本的資料結構了,這裡在操作方面沒有什麼好說的,最重要的是注意細節,將在刪除和插入的時候要注意對引數i的檢查,避免出現錯誤引數,導致程式崩潰。
第二章 順序結構
c語言沒有輸入輸出語句,通過函式庫完成,只需要用工具取出來。輸入輸出函式庫名稱為stdio。如何取出函式?1.明確函式在什麼庫中,如輸入輸出函式存在於stdio.h函式庫中。2.使用預編譯指令調入函式庫 include 如果是自定義的標頭檔案作為函式庫,採用雙引號包含庫名。輸出函式 printf 字...
第二章 資料結構 二
知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...
資料結構 第二章總結
線性表是由n 0 個資料元素組成的有限序列。我們學習了線性表上定義的基本運算 有構造空表 initlist l 求表長 listlength l 取結點 getnode l i 查詢 locatenode l x 插入 insertlist l x,i 刪除 delete l i 還學習了順序表 單...