双向循环链表
来源:互联网 发布:麒麟外推软件 编辑:程序博客网 时间:2024/06/06 02:03
#include <stdio.h>#include <stdlib.h>struct dblnode{struct dblnode * prior;int num;struct dblnode * next;};typedef struct dblnode Dblnode;typedef struct dblnode * Dbllink;void create_dbllink(Dbllink *head);void create_newnode(Dbllink *newnode);void is_malloc_ok(Dbllink *newnode);void insert_dblnode_head(Dbllink *head,Dbllink *newnode);void forward_Dblnode(Dbllink *head);void backward_Dblnode(Dbllink *head);void create_dbllink(Dbllink *head){create_newnode(head);(*head)->next = (*head)->prior = *head;}void create_newnode(Dbllink *newnode){*newnode = (Dbllink)malloc(sizeof(Dblnode));is_malloc_ok(newnode);}void is_malloc_ok(Dbllink * newnode){if(*newnode == NULL){printf("malloc is error!\n");exit(-1);}}void insert_dblnode_head(Dbllink *head,Dbllink *newnode){(*newnode)->next = (*head)->next;(*newnode)->prior = *head;(*head)->next->prior = *newnode;(*head)->next = *newnode;if((*head)->prior == (*head)){(*head)->prior = *newnode;}}void insert_dblnode_tail(Dbllink *head,Dbllink *newnode){(*newnode)->next = *head;(*newnode)->prior = (*head)->prior;(*head)->prior->next = *newnode;(*head)->prior = *newnode;}void release(Dbllink *head){Dbllink temp;temp = (*head)->next;if((*head)->next == NULL){printf("only head !\n");return;}while((*head)->next != NULL){temp = (*head)->next;(*head)->next = temp->next;free(temp);}printf("free successfully !\n");}void forward_Dblnode(Dbllink *head){Dbllink tmp;tmp = (*head)->next;while(tmp != *head){printf("num = %d\n",tmp->num);tmp = tmp->next;}}void backward_Dblnode(Dbllink *head){Dbllink tmp;tmp = (*head)->prior;while(tmp != *head){printf("num = %d\n",tmp->num);tmp = tmp->prior;}}int main(){Dbllink head = NULL;Dbllink newnode = NULL;int i;int num[10];create_dbllink(&head);for(i = 0;i < 10;i++){create_newnode(&newnode);newnode->num = i;//scanf("%d",num[i]);//insert_dblnode_head(&head,&newnode);insert_dblnode_tail(&head,&newnode);}forward_Dblnode(&head);backward_Dblnode(&head);release(&head);forward_Dblnode(&head);backward_Dblnode(&head); return 0;}
0 0
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 循环双向链表
- DOL实例分析&编程
- Java字节码.class文件案例分析
- 欢迎使用CSDN-markdown编辑器
- java基础(7)NIO
- android 事件传递机制
- 双向循环链表
- BZOJ4702 装箱游戏
- 统计学习方法读书笔记
- HDOJ 1042 N!
- JS和JAVA使用JSON方法解析
- JdbcTemplate 动态创建表并添加数据
- HTTP基础
- Eclipse启动loading descriptor for xx项目启动报错解决
- Asterisk manager API(AMI)文档(中文版)