順序表的一些基本操作演算法(copy可以直接執行),附上**:
#include
#define maxsize 100
typedef
int elementtype;
typedef
int datatype;
//定義結構體順序表
typedef
struct seq seq;
//順序表初始化
void
init
(seq* l)
//頭插法建立順序表
void
insert
(seq* l,
int i, elementtype e)
for(
int j = l->length; j >= i; j--
) l->data[i -1]
= e;
l->length++;}
// 遍歷元素
void
arraylist
(seq* l)
//printf("%d\n", l->length);
}//1.順序表刪除最小元素並返回刪除元素;
intdel_1
(seq* l)
} l->data[pos]
= l->data[l->length -1]
; l->length--
;return min;
}//2.逆轉元素
void
reverse
(seq* l)
for(
int i =
0; i < l->length /
2; i++)}
//3.一遍刪除所有相同元素的值
void
del_all
(seq* l, elementtype e)
} l->length = count;
}//4.刪除給定的兩個值之間的數
void
del_s_t
(seq* l, elementtype s, elementtype t)
for(
int i =
0; i < l->length; i++)if
(pos == l->length)
/*for ( i = 0; i < l->length && s < t; i++);
if (i >= l->length) */
for(
int i =
0; i < l->length; i++
)else
} l->length = j;
}//5.從有序表中刪除所有值重複的元素,使表中所有元素的值均不同;
void
del_df
(seq* l)
l->length = i +1;
}//6. 將兩個有序表合成乙個新的有序表
seq merge
(seq* l1, seq* l2, seq* l)
while
(i < l1->length)
while
(j < l2->length)
l->length = k;
return
*l;}
//7.將一維陣列中的兩個順序表調換位置
void
reverse2
(int a,
int left,
int right,
int size)
}void
exchange
(int a,
int m,
int n,
int size)
//8.最快時間查詢給定的元素值;若查詢的元素存在,則交換與下乙個元素的位置,不存在就插入維持有序;
void
seek
(seq *l , elementtype e)
if(l->data[mid]
== e && mid != l->length -1)
if(low>high)
l->length++
; l->data[low]
= e;}}
intmain()
;exchange
(a,3,4
,7);
printf
("將陣列中的兩個順序表互換位置後為:");
for(
int i =
0; i <
size
(a); i++
)printf
("嘗試查詢5後的結果是:");
seek
(&list3,5)
;arraylist
(&list3)
;}
附上一張測試的執行:
C語言順序表的簡單實現
插入元素 刪除元素 定位元素 include include define maxsize 1024 線性表的最大長度 typedef structsqlist,sqlink 說明標示符 void createlist sqlink l 創空表 void clearlist sqlink l 置空表...
順序表 用c語言簡單實現順序表
test.h ifndef seplist h define seplist h include include include include define max 100 define default sz 3 當前預設有效值 define isc sz 2 動態分配預設增長個數 typedef...
C語言順序表的實現
順序表的操作有初始化 插入元素 取值 查詢元素 刪除元素這五種操作。下面根據個人在嚴蔚敏老師的 資料結構 c語言版 第 2版 中的了解來說明一下。在初始化之前,我們先設定巨集定義和型別定義 define ok1 define error 0 define overflow 2 define maxs...