C中的函式功能介紹以及順序表的書寫

2021-09-07 03:38:28 字數 4421 閱讀 5378

typedefine:函式執行的時候,進行符號的轉換。

define:只做簡單的替換,預處理

區別:預處理:展開檔案,對預處理的命令替換。

如何定義乙個函式指標:先定義指標,*p,括號起來。再在

順序表的書寫思路:首先,建立目錄,進入目錄,建立三個資料夾,乙個.c檔案,乙個main.c檔案,乙個.h檔案。

在這個.h檔案中,需要寫標頭檔案。結尾加#endif。

一般在.h檔案中:

需要定義乙個結構體,

#ifndefsqlist_h

#definesqlist_h

typedef struct sqlist_s

sqlist_t;

#define success 0 用來判斷對錯

#define failed -1 用來判斷對錯

再定義函式,

int sqlist_head_add(sqlist_t *sqlist,int data); 頭插

int sqlist_tail_add(sqlist_t *sqlist,int data); 尾插

int sqlist_insert(sqlist_t *sqlist,int data,int pos);

int sqlist_del_data(sqlist_t *sqlist,int data); 刪除資料

int sqlist_del_position(sqlist_t *sqlist,int pos); 刪除位置

int sqlist_get_data_pos(sqlist_t *sqlist,int data); 獲取制定位置的資料。

int sqlist_get_pos_data(sqlist_t *sqlist,int pos); 獲取制定的資料位置

int sqlist_reserve(sqlist_t *sqlist); 逆序

int sqlist_merge(sqlist_t *new_sqlist,sqlist_t sqlist1,sqlist_t sqlist2); 合併

void sqlist_display(sqlist_t sqlist); 遍歷

int sqlist_init(sqlist_t *sqlist); 分配

int sqlist_destroy(sqlist_t *sqlist); 損毀

其次在.c檔案中:包含四個標頭檔案,然後寫每個函式功能。

#include

#include

#include

#include 「sqlist.h」

void sqlist_display(sqlist_t sqlist)

printf("******************************\n");

}int sqlist_increase(sqlist_t *sqlist)

memset(ptr+(sqlist->size * sizeof(int)),0,increase_size * sizeof(int));

sqlist->data = ptr;

sqlist->size += increase_size;

return success;

int sqlist_init(sqlist_t *sqlist)

sqlist->cur_len = 0;

sqlist->size = init_size;

sqlist->data = (int *)malloc(init_size * sizeof(int));

if(sqlist->data == null)

memset(sqlist->data,0,sizeof(int) * init_size);

return success;

int sqlist_destroy(sqlist_t *sqlist)

if(sqlist->data == null)

free(sqlist->data);

sqlist->data = null;

return success;

int sqlist_tail_add(sqlist_t *sqlist,int data)

if(sqlist->cur_len >= sqlist->size)

}sqlist->data[sqlist->cur_len] = data;

sqlist->cur_len++;

return success;

int sqlist_head_add(sqlist_t *sqlist,int data)

if(sqlist->cur_len >= sqlist->size)

}for(i = sqlist->cur_len;i>0;i--)

sqlist->data[0] = data;

sqlist->cur_len++;

return success;

int sqlist_insert(sqlist_t *sqlist,int data,int pos)

if(pos < 1 || pos > sqlist->cur_len)

if(sqlist->cur_len >= sqlist->size)

}for(i = sqlist->cur_len;i>=pos;i--)

sqlist->data[pos - 1] = data;

sqlist->cur_len++;

return success;int sqlist_del_position(sqlist_t *sqlist,int pos)

if(pos < 1 || pos > sqlist->cur_len)

for(i = pos;i < sqlist->cur_len;i++)

sqlist->cur_len--;

return success;int sqlist_del_data(sqlist_t *sqlist,int data)

for(i = 0;i < sqlist->cur_len;i++)

return success; }}

return failed;int sqlist_get_data_pos(sqlist_t *sqlist,int data)

for(i = 0;i < sqlist->cur_len;i++)

return failed;

int sqlist_get_pos_data(sqlist_t *sqlist,int pos)

if(pos < 1 || pos > sqlist->cur_len)

return sqlist->data[pos-1];

int sqlist_reserve(sqlist_t *sqlist)

for(i = sqlist->cur_len;i > sqlist->cur_len / 2;i--)

return success;int sqlist_merge(sqlist_t *new_sqlist,sqlist_t sqlist1,sqlist_t sqlist2)

new_sqlist->cur_len = 0;

new_sqlist->size = sqlist1.cur_len + sqlist2.cur_len;

new_sqlist->data = (int *)malloc(sizeof(int) * new_sqlist->size);

if(new_sqlist->data == null)

memset(new_sqlist->data,0,sizeof(int) * new_sqlist->size);

for(i = 0;i < sqlist1.cur_len;i++)

for(i = 0;i < sqlist2.cur_len;i++)

return success;

}

在這個main.c檔案中: 包含兩個標頭檔案,乙個主函式,注意,寫主函式需要定義乙個返回變數,再定義引數。

#include

#include 「sqlist.h」

int main()

for(i = 0; i < 5;i++)

}printf("**********==sqlist1**********==\n");

sqlist_display(sqlist1);

ret = sqlist_init(&sqlist2);

if(ret == failed)

for(i = 5; i < 10;i++)

}printf("**********==sqlist2**********==\n");

sqlist_display(sqlist2);

順序表的功能實現

順序表的建立,插入,刪除,清空,銷毀,查詢,輸出功能 include include include definetrue 1 definefalse 0 defineok 1 defineerror 0 defineinfeasible 1 defineoverflow 2 typedefint ...

實現順序表以及順序表的簡單運算

自定義標頭檔案 my list.h define crt secure no warnings ifndef my list h define my list h 檔案功能 實現線性表的基本運算 1 順序表的插入預算 2 順序表中元素的逆序 3 順序表的刪除運算 define max size 10...

動態順序表的功能實現

在了解線性結構後我們知道它可分為順序表和煉表兩種,而順序表又分為靜態順序表 和動態順序表.靜態順序表和靜態通訊錄的實現極為相似,但是我們知道靜態版本有著明顯的缺陷,空間分配太大易造成浪費,太小又不便儲存,而動態版本正好可以解決這個問題。既然前面提到線性結構的組成,那麼我們就在說說鍊錶分為哪些 它可分...