順序表例項(全)

2021-08-06 02:49:41 字數 3186 閱讀 6376

順序表的初始化,增加,插入,刪除等功能的例項

工程一共包含4個檔案

1. entity.h :宣告線性表的元素的型別。可以是基本資料型別也可以是結構體

2. seqlist.h :定義線性表結構體,宣告全域性的巨集定義,函式的宣告

3. seqlist.c :具體的函式實現

4. main.c : 測試檔案

參考部落格文章:

參考部落格文章:

entity.h
typedef struct data; //定義結點型別 可定義為簡單型別或者結構體
seqlist.h
/*

標頭檔案:資料結構的定義和操作原型

*/#include #include #include "entity.h"

#define maxsize 100 //定義線性表最大長度

typedef struct seqlisttype;

void seqlistinit(seqlisttype *sl); //初始化順序表

int seqlistlength(seqlisttype *sl); // 返回順序表的元素數量

int seqlistadd(seqlisttype *sl, data data); // 向順序表中新增元素

int seqlistinsert(seqlisttype *sl, int n, data data); // 向順序表中插入元素

int seqlistdelete(seqlisttype *sl, int n); // 刪除順序表中的資料

data *seqlistfindbynum(seqlisttype *sl, int n); // 根據序號返回元素

int seqlistfindbycont(seqlisttype *sl, char *key); // 按關鍵字查詢

int seqlistall(seqlisttype *sl); // 遍歷順序表

seqlist.c
/*函式檔案:具體的函式實現***/

#include "seqlist.h"

/* 初始化順序表 */

void seqlistinit(seqlisttype *sl)

/* 返回順序表元素數量 */

int seqlistlength(seqlisttype *sl)

/* 新增元素到順序表尾 */

int seqlistadd(seqlisttype *sl, data data)

sl->listdata[++sl->listlen] = data; // 把資料插入到下標為(listlen+1)的位置

return 1;//返回成功

}/* 插入元素到順序表指定位置 */

int seqlistinsert(seqlisttype *sl, int n, data data)

if(n < 1 || n > sl->listlen)

for(i = sl->listlen; i>=n; i--)

sl->listdata[n] = data; //插入資料

sl->listlen++; //資料個數加一

return 1;

}int seqlistdelete(seqlisttype *sl, int n)

for(i=n; ilistlen; i++)

sl->listlen--;

return 1;

}data *seqlistfindbynum(seqlisttype *sl, int n)

return &(sl->listdata[n]); // 返回指標增加通用性

}int seqlistfindbycont(seqlisttype *sl, char *key)

}return 0; //遍歷沒有找到

}

main.c
/* 測試檔案:呼叫測試函式*/

#include #include "seqlist.h"

/*遍歷順序表中結點*/

int seqlistall(seqlisttype *sl)

return 0;

}int main(void)

}else

}while(1);

printf("順序表為: \n");

seqlistall(&sl);

while(1)

switch(k)

data1 = seqlistfindbynum(&sl, i);

printf("位置為: %d ,元素為:(%s %s %d) \n", i, data1->key, data1->name, data1->age);

break;

case 3:

printf("輸入元素內容:");

scanf("%s %s %d", &data.key, &data.name, &data.age);

seqlistadd(&sl, data);

break;

case 4:

printf("輸入位置和元素內容:");

scanf("%d %s %s %d", &i, &data.key, &data.name, &data.age);

seqlistinsert(&sl, i, data);

break;

case 5:

printf("輸入要刪除的位置:");

scanf("%d", &i);

seqlistdelete(&sl, i);

break;

case 6:

printf("-----%d------\n", seqlistlength(&sl));

break;

case 7:

seqlistall(&sl);

break;}}

return 0;

}

順序表例項2

include include define listsize 100 typedef int datatype typedef struct seqlist include seqlist.h 合併順序表 a 和 b 到 c 的函式宣告 void mergelist seqlist a,seqli...

順序表 順序表定位

這兩個題本質一模一樣,唯一不同的是本題利用 順序表 將陣列a包裝了起來。在遍歷的過程中,拿順序表的資料去和x比對,若相同,返回當前下標值,若到了最後乙個資料元素都不相同,就返回 1 1.遍歷順序表 2.挨個比對資料元素 prism lang c include const int max 20 設定...

順序表專題 1 順序表

順序表的實現 元素儲存區操作 需求 將一組 通常是同一型別 的幾個資料元素作為乙個整體管理和使用,需要建立這種元素的組,並用變數對他們進行記錄。這樣一組資料的元素個數可能發生變化 因為增刪改查等操作 對於這種需求,最簡單的解決方式是將這組元素視為乙個序列,可以將這個結構抽象為線性表。乙個線性表是某類...