数据结构——双循环链表一部分功能的C语言实现
来源:互联网 发布:怎么样配衣服 知乎 编辑:程序博客网 时间:2024/05/16 15:45
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; Node *next; Node *last;}Node,*PNode;//节点 typedef struct List{ PNode head; PNode tail; int length;}List,*PList;//链表void initList(PList x){ PNode headNode=(PNode)malloc(sizeof(Node)); if(!headNode) exit(0); headNode->data=0; headNode->next=headNode; x->head=headNode; x->tail=headNode; x->length=0;}//初始化链表 int insertNode(PList x,int i,int e){ if(i>x->length) return 1; PNode newNode=(PNode)malloc(sizeof(Node)); if(!newNode) exit(0); newNode->data=e; PNode p=x->head; for(int j=0;j<i;j++) p=p->next; newNode->next=p->next; p->next=newNode; newNode->last=p; newNode->next->last=newNode; if(i==x->length) x->tail=newNode; x->length++; return 0;}//插入结点 int deleteNode(PList x,int i){ if(i>x->length) return 1; PNode p=x->head; for(int j=0;j<i-1;j++) p=p->next; PNode delNode=p->next; p->next=delNode->next; p->next->last=p; if(i==x->length) x->tail=p; free(delNode); x->length--; return 0;}//删除结点 void outputList(PList x,int h_t=0){ if(h_t==0){ PNode p=x->head->next; for(int i=0;i<x->length;i++){ printf("%3d",p->data); p=p->next; } printf("\n"); } else{ PNode p=x->tail; for(int i=0;i<x->length;i++){ printf("%3d",p->data); p=p->last; } printf("\n"); }}//打印链表,可选择从前往后或从后往前,默认为从前往后 int deleteList(PList x){ while(x->length>0){ deleteNode(x,x->length); x->length--; } free(x->head); x->head=NULL; x->tail=NULL;}//删除链表 int main(){ //初始化链表 PList myList=(PList)malloc(sizeof(List)); initList(myList); //添加节点 int e=0; printf("请输入要添加的数据(10个):"); for(int i=0;i<10;i++){ scanf("%d",&e); insertNode(myList,myList->length,e); } outputList(myList,1); //删除链表 deleteList(myList); return 0;}
阅读全文
0 0
- 数据结构——双循环链表一部分功能的C语言实现
- 数据结构——单循环链表一部分功能的C语言实现
- 双循环链表的实现及其功能!!!
- 数据结构(C++)——双循环链表
- 【数据结构】双循环链表(c++)
- c++实现数据结构4.双循环链表
- 数据结构-双循环链表
- c语言新建双循环链表/遍历
- 双循环链表的实现(ANSI C)
- 数据结构之双循环链表
- 学习笔记------数据结构(C语言版) 双循环链表
- 【C++数据结构】模版类实现双循环链表的基本操作
- 双循环链表(C++)
- C语言实现数据结构的链表
- 数据结构 链表的实现(C语言)
- 数据结构之—线性表之—双向链表之—浅谈双循环链表
- 数据结构(线性表):双循环链表
- 【数据结构】 双循环链表代码演示
- java utf-8 转 gbk / gbk 转 utf-8
- 购物车
- Netty集成Google的ProtoBuf序列化
- Delphi第三方控件dxdbgrid中option属性详解
- Java update dynamodb api demo with UpdateItemSpec
- 数据结构——双循环链表一部分功能的C语言实现
- codeforces 856A (思维)
- mysql批量插入优化
- 1 2汉字转拼音 3百度翻译
- 阿里云全民云计算活动:云服务器ECS二折起(云主机)采购指南
- 聚类算法
- 加入shiro后, 页面始终不没有样式
- Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
- java list 删除重复的,借助map