目錄
- 1.順序存盤結構定義
- 線性表順序儲存的結構代碼
- 陣列長度與線性表的長度的區別
- 2.順序存盤結構獲得元素操作
- 3.順序存盤結構插入操作
- 4.順序存盤結構洗掉操作
- 5.完整代碼舉例
1.順序存盤結構定義
**
線性表的順序存盤結構,指的是用一段地址連續的存盤單元以此存盤線性表的資料元素
這里的元素可能包括多組資料
**
線性表順序儲存的結構代碼
#define max 10//陣列長度
typedef int Elemtype;//Elemtype根據實際情況而定,這里為int
typedef struct list //創建順序存盤結構
{
Elemtype date[max];
int len;//線性表當前長度
};
陣列長度與線性表的長度的區別
線性表的長度是線性表中資料元素的個數,
陣列的長度是存放線性表的存盤空間的大小
**注:**只有當陣列長度>線性表的長度時才可以向線性表中插入元素
所以在任意時刻陣列長度應大于線性表的長度
2.順序存盤結構獲得元素操作
int getElem(list L,int i,Elemtype x) //獲得元素操作 ,L為線性表,i為線性表第i個元素,將值傳給x
{
if(L.len==0||i<1||i>L.len)
return 0;
else
{
x=L.date[i-1];
return x;//x即為需要獲取的元素
}
}
3.順序存盤結構插入操作
int listinsert(list*L,int i,Elemtype e)//在線性表L中第i個位置之前插入新的資料元素e,L++
{
int t;
if(L->len==max||i<1||i>L->len)
return 0;
if(i<=L->len)
{
for(t=L->len-1;t>=i-1;t--)
{
L->date[t+1]=L->date[t];//將插入元素位置后的元素向后移一位
}
L->date[i-1]=e;
L->len++;//線性表長度+1
}
}
4.順序存盤結構洗掉操作
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return 0;
*x=L->date[i-1];
if(i<L->len)
{
for(t=i;t<L->len;t++)
{
L->date[t-1]=L->date[t];
}
L->len--;
}
return 1;
}
5.完整代碼舉例
#include<stdio.h>
#include <typeinfo>
#define max 10//陣列長度
typedef int Elemtype;//Elemtype根據實際情況而定,這里為int
typedef struct list //創建順序存盤結構
{
Elemtype date[max];
int len;//線性表當前元素
};
int getElem(list L,int i,Elemtype x) //獲得元素操作 ,L為線性表,i為線性表第i個元素,將值傳給x
{
if(L.len==0||i<1||i>L.len)
return 0;
else
{
x=L.date[i-1];
return x;
}
}
int listinsert(list*L,int i,Elemtype e)//在線性表L中第i個位置之前插入新的資料元素e,L++
{
int t;
if(L->len==max||i<1||i>L->len)
return 0;
if(i<=L->len)
{
for(t=L->len-1;t>=i-1;t--)
{
L->date[t+1]=L->date[t];
}
L->date[i-1]=e;
L->len++;
}
}
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return 0;
*x=L->date[i-1];
if(i<L->len)
{
for(t=i;t<L->len;t++)
{
L->date[t-1]=L->date[t];
}
L->len--;
}
return 1;
}
int main()
{
list L;
L.date[2]=3;//定義陣列的第三個元素
L.len=3;//此時的線性表長度
int x;
printf("%d\n",getElem(L,3,x) );// 獲得線性表第三個資料
listinsert(&L, 3, 9);
printf("%d\n",getElem(L,3,x) );// 獲得插入后線性表第三個資料
listdelete(&L,3,&x);
printf("%d\n",getElem(L,3,x) );//獲得洗掉后線性表的第三個資料
}
以下為運行結果

**
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/352271.html
標籤:其他
上一篇:【演算法入門13】樹的子結構
