順序表的初始化,增加,插入,刪除等功能的例項工程一共包含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 順序表
順序表的實現 元素儲存區操作 需求 將一組 通常是同一型別 的幾個資料元素作為乙個整體管理和使用,需要建立這種元素的組,並用變數對他們進行記錄。這樣一組資料的元素個數可能發生變化 因為增刪改查等操作 對於這種需求,最簡單的解決方式是將這組元素視為乙個序列,可以將這個結構抽象為線性表。乙個線性表是某類...