一步步學習線性表

2021-05-28 18:05:04 字數 2466 閱讀 1564

線性表資料結構具有以下特徵:

1)有且只有乙個「首元素」

2)有且只有乙個「末元素」

3)除末元素之外,其餘元素均有唯一的後繼元素

4)除首元素之外,其餘元素均有唯一的前驅元素

順序表是線性表的一種最簡單和最常用的方式,這種方式用一組位址連續的儲存單元依次儲存線性表中的資料元素。由於c語言中的陣列也是採用順序儲存的方式,因此,可以使用陣列來模擬順序表的儲存形式。

順序表的標頭檔案:seqlist.h

#include

#include

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

typedef struct // 定義結點型別

data;

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); //按關鍵字查詢

void seqlistall(seqlisttype *sl);  //遍歷順序表中的內容

順序表測試檔案:seqlisttest.cpp

#include

#include

#include"seqlist.h"

void seqlistinit(seqlisttype *sl)

int seqlistlength(seqlisttype *sl)

int seqlistadd(seqlisttype *sl,data data)

sl->listdata[++sl->listlen]=data;

return 1;

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

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

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

sl->listdata[i+1]=sl->listdata[i];

sl->listdata[n]=data;

sl->listlen++;

return 1;

}int seqlistdelete(seqlisttype *sl,int n)

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

sl->listdata[i]=sl->listdata[i+1];

sl->listlen--;

return 1;

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

return &(sl->listdata[n]);

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

void seqlistall(seqlisttype *sl)

}int main()

else //年齡為0,退出迴圈

break;

}while(1);

printf("\n順序表中的結點順序為:\n");

seqlistall(&sl);

fflush(stdin); //清空輸入緩衝區

printf("\n要取出結點的序號:");

scanf("%d",&i);

data1=seqlistfindbynum(&sl,i);

if(data1)  //返回的結點指標不為null

printf("第%d個結點為:(%s,%s,&d)\n",i,data1->key,data1->name,data1->age);

fflush(stdin);

printf("\n要查詢結點的關鍵字:");

scanf("%s",key);

i=seqlistfindbycont(&sl,key);

data1=seqlistfindbynum(&sl,i);

if(data1)

printf("第%d個結點為:(%s,%s,%d)\n",i,data1->key,data1->name,data1->age);

getch();

return 0;

}程式執行結果:

一步步學習電子維修

一步步學習電子維修 第一節 電是什麼 1 電子技術,很多人感興趣,不過入門卻非常困難,我總結了下原因,1 屬於微觀,看不見摸不著 2 缺少實際動手環境 3 學校教育或培訓教育問題,填鴨式的灌輸,越來越煩,最終一點興趣也沒有了。2 針對以上問題,這裡都有絕招解決,俗話說一招鮮,吃遍天,看到這篇文章的同...

freeRTOS 一步步學習(二)

freertos 一步步學習 二 任務狀態 應用程式可以包含多個任務。如果執行應用程式的微控制器只有乙個核 core 那麼在任意給定時間,實際上只會有乙個任務被執行。這就意味著乙個任務可以有乙個或 兩個狀態,即執行狀態和非執行狀態。freertos 的排程器是能讓任務切入切出的唯一實體。任務建立 x...

freeRTOS 一步步學習(三)

freertos 一步步學習 二 任務 狀態 阻塞狀態 如果乙個任務正在等待某個事件,則稱這個任務處於 阻塞態 blocked 阻塞態是非執行態的乙個子狀態。任務可以在進入阻塞態以等待同步事件時指定乙個等待超時時間,這樣可以有效地實現阻塞狀態下同時等待兩種型別的事件。xtickstodelay 延遲...