刪除元素和 增加元素的大忌就是導致引用連斷鏈
s->next = p->next;
s->prior = p;
p->next = s;
s->next->prior = s;
s->prior->next = s->next;
s->next->prior = s-prior;
free
(s);
//記住刪除元素後要釋放這個元素
靜態鍊錶可以理解為陣列
typedef
struct
slnode;
//建表
int sqlist[maxsize]
=int length = n;
/* sqlist是待插入的陣列,length是陣列大小,因為需要改變大小,所以這裡是引用型別
* p表示往**插,也就是位置,e表示元素
*/int
insertelem
(int sqlist,
int&length,
int p,
int e)
//元素分別後移
for(
int i = length-
1;i>p;
--i)
//插入資料,長度+1
sqlist[p]
= e;
++length;
return1;
//返回1表示插入成功
}//與插入不同的引數是e,一般要拿到刪除元素的值,所以需要引用值
intdeleteelem
(int sqlist,
int&length,
int p;
int&e)
e = sqlist[p]
;for
(int i=p;i++i)
--length;
return1;
}//尾插法
void
createlinklistr
(lnode *
&head)
}//頭插法
void
createlinklisth
(lnode *
&head)
}
鍵盤輸入n個英文本母,輸入格式為 n、c1、c2、…、 cn,其中n表示字母的個數。請程式設計以這些輸入資料建立乙個單鏈表,並要求將字母不重複的存入鍊錶。
void
createlinknosameelem
(lnode *
&head)
//遍歷 如果找到相同的p!=null,如果沒找到相同的,那麼p就不為空
if(p==
null)}
}
int max = a[0]
;int maxidx =0;
for(
int i=
0;i++i)
}//當然取最小值同理,這裡就不寫了
void
mergearray
(int a ,
int m,
int b,
int n,
int c)
else
}while
(iwhile
(j}
void
merge
(lnode *a, lnode *b, lnode *
&c)else}if
(p!=
null
) r->next = p;
if(q!=
null
) r->next = q;
}//如果是想逆序,倒著插入 就可以了
//歸併操作實現一條逆序序列的**
void
merger
(lnode *a, lnode *b,lnode *
&c)else
}while
(p!=
null
)while
(q!=
null
)}
void
partition
(int arr,
int n)
while
(i--i;
if(i} arr[i]
= temp;
}
mysql 線性表 資料結構之線性表
概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...
資料結構之線性表
從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...
資料結構之線性表
線性表是具有相同特性的資料元素的乙個有限序列。該序列中所含元素的個數叫做線性表的長度,用n表示,n 0。當n 0時,表示線性表是乙個空表,即表中不包含任何元素。設序列中第i i表示位序 個元素為ai 1 i n 線性表的一般表示為 a1,a2,ai,ai 1,an include include d...