typedef
int elementtype;
typedef
structlist;
list
* makeempty()
void insert(elementtype x,int i ,list* ptrl)
if(i < 1 || i > ptrl->last + 2)
for(j = ptrl->last ; j >= i - 1 ; j --) //將a(i) ~ a(n)順序向後移動
ptrl->data[j + 1] = ptrl->data[j];
ptrl->data[i - 1] = x;//新元素插入
ptrl->last ++; //last指向最後
return;
}
//成功返回索引值,否則返回-1
int find(elementtype x ,list* ptrl)
void delete(int i,list *ptrl)
for(j = i ; j <= ptrl->last ; j ++)
ptrl->data[j - 1] = ptrl->data[j]; //將a(i + 1) ~ a(n)順序向前移動
ptrl->last --; //last 指向最後元素
return;
}
typedef
int elementtype;
typedef
struct nodelist;
//建立鍊錶,返回乙個值為零的煉表頭
list
* createnode()
//返回第k個指標,沒有就返回null
list
* findkth(int k,list
* ptrl)
if(i == k)
return p;
else
return
null;
}
list
* find(elementtype x,list
*ptrl)
list
* insert(elementtype x , int i , list
* ptrl)
p = findkth(i -
1 , ptrl);
if(p ==
null)
else
}
list
* delete(int i,list
*ptrl)
p = findkth(i -
1,ptrl);
if(p ==
null)else
if( p->next ==
null)else
}
void printnode(list
* ptrl)
}
#define error -1
typedef
int elementtype;
typedef
structstack;
stack
* createstack()
void push(stack
* ptrs,elementtype item)else
}
elementtype pop(stack
* ptrs)else
return(ptrs->
data
[(ptrs->top) --]);
}
int isempty(stack
* s)
#define error -1
typedef
int elementtype;
typedef
structqueue;
queue
* createqueue()
void addq(queue
* ptrq, elementtype item)
elementtype deleteq(queue
* ptrq)else
}
用鍊錶實現堆疊
堆疊資料一種後進先出的資料結構,只能在一端 稱為棧頂 top 對資料項進行插入和刪除。基本的堆疊操作是push和pop,push是把乙個新值壓入堆疊的頂部,pop是把堆疊的頂部的值移除並返回這個值。堆疊只提供對它的棧頂值的訪問。堆疊很容易實現,可以用靜態陣列 動態陣列 鍊錶實現堆疊。本文介紹的是鍊錶...
堆疊的鍊錶實現
鍊錶是帶頭結點的.每次執行入棧操作,都是把資料壓入第1個節點.完整 如下 include define true 1 define false 0 typedef int elementtype struct s stack typedef struct s stack stack typedef ...
堆疊的鍊錶方式實現
除了公式化即陣列的實現方式,堆疊還可以用鍊錶的方式實現,這種方式對空間利用率更高。在使用鍊錶來表示堆疊時,必須確定鍊錶的哪一端對應於棧頂。如果把鍊錶的右端作為棧頂,那麼可以利用鍊錶操作 i n s e r t n x 和d e l e t e n x 來實現堆疊的插入和刪除操作,其中 n為鍊錶中的節...