棧與佇列基本操作

2021-09-03 07:15:56 字數 2649 閱讀 4595

#include #include typedef struct lnodelnode,*linklist;

//頭插法

linklist create_list_head(int n)

return head;

}//尾插法

linklist create_list_tail(int n)else

}tail -> next = null;

return head;}

//元素節點總長度,個數不包括頭結點

int total_length(linklist head)

return count;

}//獲取第i個元素 ,個數包括頭結點

int get_element(linklist head,int i,int *element)

if(!p || j>i) return 0;

*element = p->data;

return 1;}

//查詢第乙個值為element的元素,返回下標

int location_element(linklist head,int element)

if(!p) return 0;

return i;

}//在帶有頭結點的單鏈表中第i個位置之前插入元素element ,個數不包括頭結點

int list_insert(linklist head,int i,int element)

if(p->next==null || j>i) return 0;

linklist newp = (linklist)malloc(sizeof(linklist));

newp -> data = element;

newp -> next = p->next;

p->next = newp;

return 1;}

//刪除第i個元素,並由element返回刪除的值 ,個數不包括頭結點

int list_delete(linklist head,int i,int *element)

if(p->next==null || j>i) return 0;

linklist q = p -> next;

*element = q -> data;

p->next = q -> next;

free(q);

return 1;}

//已知第乙個和第二個單鏈線性表的元素是按照值進行非遞減排列,歸併後新的單鏈表也按照值進行非遞減排列

linklist list_merge(linklist head1,linklist head2)else

pc -> next = pa?pa:pb; //插入剩餘段

free(head2); //釋放第二個鍊錶的頭結點

} return head3;}

void print(linklist head)

}int main()else

int element;

scanf("%d",&element);

int location = location_element(head,element);

if(location)

//if(list_insert(head,3,9))else

//int element1;

//if(list_delete(head,4,&element1))else

//scanf("%d",&n2);

//linklist head1 = create_list_tail(n2);

//linklist head3 = list_merge(head,head1);

//print(head3);

return 0;

}

#include #include #define stackincrement 10

typedef structsqstack;

//初始化棧

int init_stack(sqstack &s,int n)

//判斷棧是否為空

int empty_stack(sqstack s)

return 0;

}//壓棧

int push_stack(sqstack &s,int e)

*s.top = e;

s.top++;

return 1; }

//出棧

int pop_stack(sqstack &s,int *element)

//查詢棧頂元素

bool get_top(sqstack s,int *element)

//查詢棧的長度

int get_length(sqstack s)

return length;

} int main()

int element;

if(get_top(s,&element))

printf("棧的長度為:%d\n",get_length(s));

int top_e;

if(pop_stack(s,&top_e))

printf("pop元素後棧的長度為:%d\n",get_length(s));

棧與佇列基本操作

想了下,上學期學的資料結構線性結構還有些混亂的地方,想做一點注意事項的總結。1.鍊錶 2.棧順序棧 定義乙個陣列 可以是陣列形式的data 或指標形式的 data,若是指標形式就 需要在結構體中加乙個變數maxsize存放陣列的最大容量 和棧頂指標 在順序棧中就是 陣列下標 棧頂指標存放棧頂元素,初...

7 6 棧與佇列 棧的基本操作和應用

棧和佇列都是特殊的線性表,是限制訪問位置的線性結構 可以由順序表實現,也可以由鍊錶實現。棧定義為 只允許在表的一端進行插入和刪除的線性表 允許進行插入和刪除的一端叫做 棧頂 top 而另一端叫 棧底 bottom 棧中沒有任何元素時,稱為 空棧。設給定棧s a0,a1,an 1 稱a0為棧底,an ...

棧和佇列的基本操作

看歐立奇的 程式設計師面試寶典 的棧和佇列的部分,發現了部分問題。其中棧的部分,不能簡單的用malloc函式來初始化stack,應該呼叫create 函式 而且棧的base應該指向棧的最下面的資料的下乙個位址。全部除錯通過 棧的部分通過單鏈表來實現鏈棧的結構 include using namesp...