線性表資料結構具有以下特徵:
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 延遲...