Status Push(LinkList L,ElemType e){
LinkList p =(LinkList)malloc(sizeof(LinkList));
p->data = e;
p->next = L->next;
L->next = p;return1;}
Status Pop(LinkList L,ElemType *e){
LinkList p =(LinkList)malloc(sizeof(LinkList));if(L->next ==NULL)return0;
p = L->next;*e = p->data;
L->next = p->next;return1;}
递增的整数序列链表的插入
List Insert( List L, ElementType X ){
List head = L;
List p =(List)malloc(sizeof(List));
p->Next=NULL;
p->Data=X;while(L->Next!=NULL&& L->Next->Data<=X){
L=L->Next;}
p->Next=L->Next;
L->Next=p;return head;}
两个有序链表序列的合并
List Merge( List L1, List L2 ){
List L =(List)malloc(sizeof(List));
List p = L;
List a = L1->Next;
List b = L2->Next;while(a!=NULL&&b!=NULL){
if(a->Data<=b->Data){
p->Next=a;
a=a->Next;}else{
p->Next=b;
b=b->Next;}
p = p->Next;}
p->Next=a ? a:b;
L1->Next=NULL;
L2->Next=NULL;return L;}
二分查找
Position BinarySearch( List L, ElementType X ){
int high = L->Last;int mid,low=1;while(low<=high){
mid=(low+high)/2;if(L->Data[mid]<X)
low = mid +1;elseif(L->Data[mid]>X)
high = mid-1;elsereturn mid;}return NotFound;}
线性探测法的查找函数
Position Find( HashTable H, ElementType Key ){
int index =Hash(Key,H->TableSize);int size=0;while(size<H->TableSize){
if(H->Cells[index].Info==Empty || H->Cells[index].Data==Key)return index;
index =(index+1)%H->TableSize;
size++;}return ERROR;}
二分查找(含排序)
voidSort(List L){
int i,j,tmp;int n = L->Last;for(i=0;i<n-1;i++){
for(j=0;j<n-i;j++){
if(L->Data[j]> L->Data[j+1]){
tmp = L->Data[j];
L->Data[j]= L->Data[j+1];
L->Data[j+1]= tmp;}}}}intBinarySearch(List L,int X ){
int high=L->Last,mid,low=1;while(low<=high){
mid