用C語言描述資料結構

2021-04-13 07:18:15 字數 3024 閱讀 7388

用c語言描述資料結構

學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解;然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算;在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本的,然後再是在他們的基礎上層層深入。在過去的一年之中,我對計算機的語言有了乙個大體的了解,在前一段時間,我自學了資料結構,下面,談談我自學的資料結構的看法,在接下來一段有人指點的時間裡,再來糾正以前對資料結構的錯誤看法。資料結構是乙個比較抽象的東西,他的任務是從各種實際的問題中歸納,抽象出個物件的特徵,物件之間的相互關係,在選擇合適的資料結構來組織,、儲存和選擇相應的演算法。其中,最重要的還是一種抽象思維的轉換,需要有一種歸納的思維,在初學的時候,我選擇了在理解的基礎上背一些比較典型的資料結構,比如:線性表,隊,餞的儲存方法等,最後發現一些其他的東西也可以類似。用c語言描述資料結構可以分為以下幾部分:線性表,隊,餞,廣義表,然後是樹,圖,最後還有遞迴,串,查詢,排序。其中較為典型的例子有走迷宮,漢諾塔,出

學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解;然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算;在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本的,然後再是在他們的基礎上層層深入。

在過去的一年之中,我對計算機的語言有了乙個大體的了解,在前一段時間,我自學了資料結構,下面,談談我自學的資料結構的看法,在接下來一段有人指點的時間裡,再來糾正以前對資料結構的錯誤看法。

資料結構是乙個比較抽象的東西,他的任務是從各種實際的問題中歸納,抽象出個物件的特徵,物件之間的相互關係,在選擇合適的資料結構來組織,、儲存和選擇相應的演算法。其中,最重要的還是一種抽象思維的轉換,需要有一種歸納的思維,在初學的時候,我選擇了在理解的基礎上背一些比較典型的資料結構,比如:線性表,隊,餞的儲存方法等,最後發現一些其他的東西也可以類似。

用c語言描述資料結構可以分為以下幾部分:線性表,隊,餞,廣義表,然後是樹,圖,最後還有遞迴,串,查詢,排序。其中較為典型的例子有走迷宮,漢諾塔,出入佇列哈夫曼編碼等。

現行表示具有相同特徵的資料元素的乙個有限序列,儲存方式有兩種:順序儲存——順序表,鏈式儲存——鍊錶。

(一)順序表儲存結構,用c語言來執行各個基本運算的分類:

typedef char elemtype

/*將字元性重新用elemtype來定義*/

#define maxsize  99

/*用巨集定義來定義maxsize*/

typedef struct

sqlist;

(1)初始化線性表

void initlist(sqlist *&l)

/*將l定義為sqlist型別*/

(2)銷毀線性表

void destroylist(sqlist *&l)

(3)判斷線性表是否為空

int listempty(sqlist *l)

(4)求線性表的長度

int listlength(sqlist *l)

(5)輸出線性表

void displist(sqlist *l)

(6)求線性表中某個資料元素得值

比如求線性表的第i個元素的值e

int getelem(sqlist *l,int i,elemtype e)

/*線性表l的第i個元素的值e*/

(7)按元素值查詢(查詢第乙個與元素值相同的元素的位置)

int locateelem(sqlist *l,elemtype e)

(8)插入資料元素

int listinsert(sqlist *l,int i,elemtype e)

(9)刪除資料元素

int listdelete(sqlist *l,int i,elemtype &e)

以上是資料結構關於順序表的各種有關的儲存方式,與順序表對應的是鍊錶,它也是一種非常重要的儲存方式。

在初次接觸到c語言的時候已經對鍊錶有了大體的了解,它主要是由結點和指標域組成,指標指向下乙個結點。

(二)單鏈表的運算的實現

typedef char elemtype

#define maxsize 99

typedef struct lnode

linklist;

(1)初始化線性表

void initlist(linklist *&l)

(2)銷毀線性表

void destroylist(linklist *&l)

(3)判斷線性表是否為空?

int listempty(linklist *l)

(4)求線性表的長度

int listlength(linklist *l)

return i; }

(5)輸出線性表

void displist(linklist *l)

printf("/n");           }

(6)求線性表中的夢資料元素的值

int getlist(linklist *l,int i,elemtype &e)

if(p==null)

return 0;

else

} (7)按元素值查詢(在單鏈表中從頭開始查詢第乙個值與e相同的結點)

int locateelem(linklist *l,elemtype e)

if(p=null)

return 0;

else

return n; }

(8)插入資料元素

int insertelem(linklist *&l,int i,elemtype e)

if(p=null)

return 0;

else

} (9)刪除資料元素

int deleteelem(linklist *&l,int i,elemtype e)

if(p=null)

return 0;

else

}

c語言描述資料結構應用

學生的學號 姓名 根據輸入資料建立一棵二叉樹 第乙個輸入資料作為根節點 要求 左子樹節點的學號總比根節點小,右子樹節點的學號總比根節點大。1 鍵盤輸入你所在宿舍的同學資訊到二叉樹 2 按學號大小輸出所有同學資訊 3 給定學號,查詢該學號同學的姓名 樹的操作 include stdio.h inclu...

資料結構(C語言描述)棧

棧是一種特殊的表,這種表只在表首進行插入和刪除操作。因此,表首對棧來說具有特殊的意義,稱為棧頂。表尾稱為棧底。不含任何元素的棧稱為空棧。假設乙個棧s中的元素為a n a n 1 a 1 則稱a 1 為棧底元素,a n 為棧頂元素。棧中元素按a 1 a 2 a n 的次序進棧。在任何時候,出棧的元素都...

C語言描述資料結構 封裝DLL

vs建立dll的過程 dll的空專案建立完成後,建立dll的標頭檔案,如下 ifdef myfirstdll h define myfirstdll h endif include include declspec dllexport int add int a,int b declspec dll...