#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...