链式队列:
fun.c
#include"head.h"
qup create_queue(){
qup q=(qup)malloc(sizeof(struct queue));
if(NULL==q){
printf("申请空间失败\n");
return NULL;
}
node head=(node)malloc(sizeof(struct node));
if(NULL==head){
printf("空间申请失败");
return NULL;
}
head->len=0;
head->next=NULL;
q->front=head;
q->rear=head;
return q;
}
node create_node(datatype key){
node new=(node)malloc(sizeof(struct node));
if(NULL==new){
printf("申请空间失败");
return NULL;
}
new->data=key;
new->next=NULL;
return new;
}
int input_queue(qup q,datatype key){
if(NULL==q){
printf("输入参数无效");
return -1;
}
node rear=q->front;
while(rear->next!=NULL){
rear=rear->next;
}
rear->next=create_node(key);
q->front->len++;
q->rear=rear->next;
return q->front->len;
}
int output_queue(qup q){
if(NULL==q){
printf("输入参数无效");
return -1;
}
node L=q->front;
node p=L->next;
L->next=p->next;
printf("%d->",p->data);
free(p);
p=NULL;
L->len--;
return L->len;
}
int output_entir_queue(qup q){
if(NULL==q){
printf("输入参数无效");
return -1;
}
printf("front->");
while(output_queue(q)!=0);
printf("rear\n");
return 0;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
union{
datatype data;
int len;
};
struct node* next;
}*node;
typedef struct queue{
node front;
node rear;
}*qup;
qup create_queue();
node create_node(datatype key);
int input_queue(qup q,datatype key);
int output_queue(qup q);
int output_entir_queue(qup q);
#endif
main.c
#include"head.h"
int main(int argc, const char *argv[])
{
qup q=create_queue();
for(int i=0;i<10;i++){
input_queue(q,i);
}
output_entir_queue(q);
return 0;
}
终端结果:
ubuntu@ubuntu:seq_looplist$ gcc *.c
ubuntu@ubuntu:seq_looplist$ ./a.out
front->0->1->2->3->4->5->6->7->8->9->rear
二叉树:
void mid_output(btree tree){
if(tree==NULL)return;
mid_output(tree->left);
printf("%c\t",tree->data);
mid_output(tree->right);
}
void end_output(btree tree){
if(tree==NULL)return;
end_output(tree->left);
end_output(tree->right);
printf("%c\t",tree->data);
}