今日任務(wù)
鏈?zhǔn)疥犃校?/h3>
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct link_list{
datatype data;
struct link_list* next;
}link,*linkp;
typedef struct circulate_line_top{
linkp front;
linkp rear;
}link_top,*link_topp;
link_topp create_top();
int push(link_topp p,datatype data);
int pull(link_topp p);
int output(link_topp p);
int del(link_topp p);
#endif
fun.c
#include "head.h"
/*
* function: 創(chuàng)建top節(jié)點
* @param [ in]
* @param [out]
* @return
*/
link_topp create_top(){
link_topp top=(link_topp)malloc(sizeof(link_top));
if(NULL==top){
puts("top point malloc failed");
return NULL;
}
top->front=NULL;
top->rear=NULL;
puts("top point create success");
return top;
}
/*
* function: 創(chuàng)新鏈表節(jié)點
* @param [ in]
* @param [out]
* @return
*/
linkp create(datatype data){
linkp p=(linkp)malloc(sizeof(link));
if(NULL==p){
puts("link list point malloc failed");
return NULL;
}
p->data=data;
p->next=NULL;
puts("link list point create success");
return p;
}
/*
* function: 空指針判定
* @param [ in]
* @param [out]
* @return
*/
int void_point(link_topp p){
if(NULL==p){
puts("null point pass");
return -1;
}
return 0;
}
/*
* function: 判空
* @param [ in]
* @param [out]
* @return
*/
int is_empty(link_topp p){
if(NULL==p){
puts("null point pass");
return -1;
}
if(p->front==NULL){
puts("stack is NULL");
return 1;
}
return 0;
}
/*
* function: 入隊
* @param [ in]
* @param [out]
* @return
*/
int push(link_topp p,datatype data){
if(void_point(p))
return -1;
linkp new=create(data);
//入隊
if(p->front==NULL)
p->front=new;
if(p->rear!=NULL)
p->rear->next=new;
p->rear=new;
// printf("t->front%d\n",p->front->data);
// printf("t->rear%d\n",p->rear->data);
// printf("t->front%p\n",p->front);
puts("push success");
return 0;
}
/*
* function: 出隊
* @param [ in]
* @param [out]
* @return
*/
int pull(link_topp p){
if(void_point(p))
return -1;
//判空
if(p->front==NULL){
puts("link stack is null ,it's no deed to pull");
return 0;
}
//出隊
linkp del=p->front;//記錄出隊指針,free
datatype data=del->data;
p->front=p->front->next;
free(del);
del=NULL;
puts("pull success");
return 0;
}
/*
* function: 循環(huán)輸出
* @param [ in]
* @param [out]
* @return
*/
int output(link_topp p){
linkp i=p->front;//不移動原指針
if(void_point(p))
return -1;
if(is_empty(p))
return 0;
while(i!=NULL){
printf("<-%d",i->data);
i=i->next;
}
puts("output success");
return 0;
}
/*
* function: 銷毀
* @param [ in]
* @param [out]
* @return
*/
int del(link_topp p){
if(void_point(p))
return -1;
linkp del;
while(p->front!=NULL){
del=p->front;
p->front=p->front->next;
free(del);
}
free(p);
puts("del success");
return 0;
}
main.c
#include "head.h"
//鏈表實現(xiàn)循環(huán)隊列---尾插頭刪
int main(int argc, const char *argv[])
{
link_topp t=create_top();
push(t,11);
push(t,12);
push(t,13);
push(t,14);
printf("t->front%p\n",t->front);
output(t);
printf("t->front%p\n",t->front);
pull(t);
output(t);
pull(t);
output(t);
pull(t);
output(t);
pull(t);
output(t);
pull(t);
output(t);
del(t);
t=NULL;
return 0;
}
運行效果:
文章來源:http://www.zghlxwxcb.cn/news/detail-685574.html
遞歸
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int a){
printf("%d\n",a%10);
a/=10;
if(a>0)
fun(a);
return 0;
}
int main(int argc, const char *argv[])
{
//使用遞歸實現(xiàn)程序,輸入一個數(shù),輸出該數(shù)的每個數(shù)
int a=123456;
fun(a);
return 0;
}
今日思維導(dǎo)圖文章來源地址http://www.zghlxwxcb.cn/news/detail-685574.html
到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)day07(棧和隊列)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!