1、思维导图
https://www.zhixi.com/view/a0aae8eb
2、链式队列
link_seq.h
#ifndef __LINK_H__
#define __LINK_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef int datatype;
typedef struct Seq
{
union
{
datatype data;
int len;
};
struct Seq *next;
}seq,*pseq;
typedef struct P
{
pseq f;
pseq w;
}p,*pp;
pp create_head();//创建头
pseq create_node(datatype data);//创建节点
int rudui(pp q,datatype data);//入队
int output(pp q);//遍历
int weicha(pp q,datatype data);//尾插
int chudui(pp q);//出队
#endif
link_seq.c
#include "link_seq.h"
pp create_head()//创建头
{
pseq h=(pseq)malloc(sizeof(seq));
if(h==NULL)
{
printf("申请空间失败\n");
return NULL;
}
h->len=0;
h->next=NULL;
pp q=(pp)malloc(sizeof(p));
if(q==NULL)
{
printf("申请空间失败\n");
return NULL;
}
q->f=h;
q->w=h;
return q;
}
pseq create_node(datatype data)//创建节点
{
pseq new=(pseq)malloc(sizeof(seq));
if(new==NULL)
{
printf("申请空间失败\n");
return NULL;
}
new->data=data;
new->next=NULL;
return new;
}
int rudui(pp q,datatype data)//入队
{
if(q==NULL)
{
printf("入参为空\n");
return -1;
}
pseq new=create_node(data);
q->w->next=new;
q->w=new;
q->f->len++;
return 0;
}
int weicha(pp q,datatype data)//尾插
{
if(q==NULL)
{
printf("入参为空\n");
return -1;
}
pseq new=create_node(data);
new->next=q->f->next;
q->f->next=new;
q->f->len++;
return 0;
}
int chudui(pp q)//出队
{
if(q==NULL)
{
printf("入参为空\n");
return -1;
}
if(q->f->next==NULL)
{
printf("链队为空\n");
return 0;
}
pp p=q;
while(q->f->next!=NULL)
{
printf("出队的是%d\n",q->f->next->data);
free(q->f->next);
p->f->next=q->f->next->next;
p->f->len--;
}
q=p;
if(q->f->len==0)
q->w=q->f;
return 0;
}
int output(pp q)//遍历
{
if(q==NULL)
{
printf("入参为空\n");
return -1;
}
if(q->f->next==NULL)
{
printf("链队为空\n");
return 0;
}
pp p=q;
while(q->f->next!=NULL)
{
printf("%d\t",q->f->next->data);
q->f=q->f->next;
}
printf("\n");
q=p;
return 0;
}
3、递归
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int digui(int x)
{
if(x==0)
return 0;
int i,j;
i=x%10;
j=x/10;
printf("%d\n",i);
return digui(j);
}
int main(int argc, const char *argv[])
{
int x;
printf("输入一个数:");
scanf("%d",&x);
digui(x);
return 0;
}