線性表可以按照其儲存結構劃分為順序表、鍊錶。如下圖:
順序表
順序表的描述:
(1)陣列靜態分配
#define maxsize 30
typedef int elemtype;
typedef structsqlist;
(2)陣列動態分配
#define maxsize 30
typedef int elemtype;
typedef structsqlist;
【注意】l.data=(elemtype *)malloc(sizeof(elemtype )*initsize);//c初始記憶體分配語句
l.data= new elemtype[initsize];//c++
基本操作:
initlist(&l):初始化線性表。構造乙個空的線性表。
length(l):求表長。
locateelem(l,e):按值查詢。
getelem(l,i):獲取表l中第i個位置上的元素的值。
listinsert(&l,i,e):在第i個位置插入元素e。
listdelete(&l,i,&e):刪除第i個位置的元素,並用e返回其值。
printlist(l):輸出l。
empty(l):判空。
destroylist(&l):銷毀,釋放空間。
常見基本操作具體**:
void initlist(sqlist &l)
void listinsert(sqlist&l,int i,elemtype e)
//判斷空間是否已滿
if(l.length>=maxsize)
//插入,從第i個元素起,所有元素向後移
for(int j=l.length;j>=i;j--)
//給第i個位置賦值
l.data[i-1]=e;
//表長增加
l.length++;
}
void listdelete(sqlist &l,int i,elemtype &e)
//將第i個位置的值賦值給e
e=l.data[i-1];
//把從第i+1個元素起向前移
for(int j=i+1;j<=l.length;j++)
//修改表長
l.length--;
}
int locateelem(sqlist l,elemtype e)
}return 0;
}
void printlist(sqlist l)
printf("表長:%d\n",length(l));
printlist(l);
elemtype ch;
int pos;
printf("請輸入要刪除的元素位置:\n");
scanf("%d",&pos);
listdelete(l,pos,ch);
printf("刪除%d之後:\n",ch);
printf("表長:%d\n",length(l));
printlist(l);
printf("請輸入要查詢的元素值:\n");
scanf("%d",&ch);
if(locateelem(l,ch)==0)else
}
結果如下:
線性表的順序儲存 順序表
一丶順序表 概念 採用順序儲存的線性表稱為順序表,順序表中邏輯上相鄰的資料元素在物理儲存位置上也是相鄰的。二丶定義順序表 用一維陣列來描述順序表的資料儲存。由於順序表有插入刪除等操作,即順序表的表長會發生改變。因此是陣列長度足夠大,加入整型變數length來記錄此時線性表中資料元素的個數,順序表的結...
線性表的順序儲存 順序表
線性表,簡稱表,是n n 0 個具有相同型別的資料元素的有限序列。1 線性表是乙個相當靈活的資料結構,對線性表的資料元素不僅可以進行訪問訪問,還可以進行插入和刪除等操作。2 a1稱為第1個元素,an稱為最後乙個元素,任意一對相鄰的資料元素a i 1 和a i 1序偶關係 且a i 1 稱為a i 的...
線性表的順序儲存(順序表)
課程名 資料結構 實驗目的 1 掌握線性表的定義 2 掌握線性表的基本操作,如建立 查詢 插入和刪除等。實驗要求 定義乙個包含學生資訊 學號,姓名,成績 的順序表和煉表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生...