鍊錶堆疊C實現

2021-07-07 10:29:37 字數 2372 閱讀 3991

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為鍊錶中的節...