15-双向链表用法_案例代码
来源:互联网 发布:淘宝咸鱼网怎么样 编辑:程序博客网 时间:2024/05/14 07:47
双向链表
代码 1 :
#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct node{ data_t data; struct node * front; struct node * next;}duolist_t;//创建duolist_t* create_duolist(){ duolist_t* list=malloc(sizeof(duolist_t)); list->front=NULL; //头结点指向前方的指针 list->next=malloc(sizeof(duolist_t));//头结点指向后面的指针 list->next->front=list;//尾节点指向前面的指针 list->next->next=NULL;//尾节点指向后面的指针 return list;}//判空int isempty(duolist_t* list){ if(list==NULL) return 0; return list->next->next==NULL;}//增int insert_duolist(duolist_t* list,data_t data){ if(list==NULL) return -1; duolist_t* newnode=malloc(sizeof(duolist_t)); newnode->data=data; newnode->front=list; newnode->next=list->next; newnode->front->next=newnode; newnode->next->front=newnode; return 0;}//删int delete_duolist(duolist_t* list){ if(list==NULL||isempty(list)) return -1; duolist_t* temp=list->next; temp->front->next=temp->next; temp->next->front=temp->front; free(temp); return 0;}//查 返回谁的地址?duolist_t* locate_duolist(duolist_t* list,data_t data){ if(list==NULL||isempty(list)) return NULL; while(list->next->next!=NULL) { if(list->next->data==data) return list->next; list=list->next; } return NULL;}//改int change_duolist(duolist_t* list,data_t data){ if(list==NULL) return -1; list->data=data; return 0;}//打印int print_duolist(duolist_t* list){ if(list==NULL||isempty(list)) return -1; while(list->next->next!=NULL) { printf("%3d ",list->next->data); list=list->next; } printf("\n"); return 0;}//逆打印int reprint_duolist(duolist_t* list){ if(list==NULL||isempty(list)) return -1; while(list->next->next!=NULL) { list=list->next; } list=list->next; while(list->front->front!=NULL) { printf("%3d ",list->front->data); list=list->front; } printf("\n"); return 0;}//长度int length_duolist(duolist_t* list){ if(list==NULL||isempty(list)) return 0; int sum=0; while(list->next->next!=NULL) { sum++; list=list->next; } return sum;}//清空int clear_duolist(duolist_t* list){ if(list==NULL||isempty(list)) return -1; while(list->next->next!=NULL)//length_duolist(list) { delete_duolist(list); } return 0;}//销毁int destroy_duolist(duolist_t* list){ if(list==NULL) return -1; if(!isempty(list)) clear_duolist(list); free(list->next); free(list); return 0;}int main(int argc, const char *argv[]){ duolist_t* list=create_duolist(); int i; for(i=1;i<=15;i++) { insert_duolist(list,i*2); print_duolist(list); } change_duolist(locate_duolist(list,20),250); print_duolist(list); insert_duolist(locate_duolist(list,250)->front,20); print_duolist(list); delete_duolist(locate_duolist(list,250)->front); print_duolist(list); reprint_duolist(list); printf("length_duolist:%d\n",length_duolist(list)); clear_duolist(list); printf("length_duolist:%d\n",length_duolist(list)); destroy_duolist(list); list=NULL; return 0;}
0 0
- 15-双向链表用法_案例代码
- 14-链表用法_案例代码
- 双向链表_双环
- 16-栈的几种用法_案例代码
- 双向链表 代码
- ACE双向链表用法
- 双向链表及其用法
- 线性表_双向循环链表(Caesar加密变换结点顺序 代码实现 )
- 数据结构课程设计_双向循环链表
- 6_双向循环链表
- 数据结构_双向循环链表
- c++ 双向链表代码
- 数据结构代码-双向链表
- 双向链表代码实例
- 【复习代码】双向链表
- c语言_数据结构_双向循环链表
- c语言_数据结构_双向循环链表
- (C语言)双向链表实现案例(数据结构六)
- 12-Shell脚本_练习
- 13-Makefile基本语法
- 14-链表用法_案例代码
- 数位dp小练
- POJ2236并查集
- 15-双向链表用法_案例代码
- 使用Python的Requests库进行web接口测试
- 16-栈的几种用法_案例代码
- 面试分享:挑战25K/月的android 高级开发工程师
- 17-tree_queue_linkstack_linkqueue_代码案例
- Android demo-->学生选课系统,使用Sqlite存储数据
- Linux Kernel media框架(一)
- Android APK反编译就这么简单 详解(附图)
- MySQL语法笔记