双向链表学习
来源:互联网 发布:idea新建普通java项目 编辑:程序博客网 时间:2024/05/16 11:20
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct DLNode{ struct DLNode *front,*tail; ElemType data;}DLNode,*LinkList;//初始化双向链表int InitList(LinkList &L){ L=(LinkList)malloc(sizeof(DLNode)); L->front=L; L->tail=L; return 0;}//插入元素int InsertList(LinkList &L,int pos ,ElemType e){ LinkList p=L,s; int j=0; while(j<pos-1){ p=p->tail; j++; } s=(LinkList)malloc(sizeof(DLNode)); s->data=e; s->tail=p->tail; p->tail->front=s; p->tail=s; s->front=p; return 0;}//删除元素int DeleteList(LinkList &L,int pos ,ElemType &e){ LinkList p=L,q; int j=0; while(j<pos -1){ p=p->tail; j++; } q=p->tail; e=q->data; p->tail=q->tail; q->tail->front=q->front; return e;}//得到元素int GetList(LinkList L,int pos,ElemType &e){ LinkList p=L; int j=0; while(j<pos){ p=p->tail; j++; } e=p->data; return e;}//判空双链表int EmptyList(LinkList L){ if(L->tail==L&&L->front==L){ return 1; } else { return 0; }}//清空双链表int ClearList(LinkList &L){ LinkList p=L->tail,q; while(p!=L){q=p->tail; free(p); p=q; }L->tail=L->front=L; return 0;}int main(){ LinkList L,k; int i,e; InitList(L); for(i=1;i<=5;i++){ InsertList(L,1,i); } for(k=L->tail;k!=L;k=k->tail){ printf("%d ",k->data); } printf("\n"); GetList(L,3,e); printf("%d",e); printf("\n"); DeleteList(L,3,e); printf("%d",e); printf("\n"); for(k=L->tail;k!=L;k=k->tail){ printf("%d ",k->data); }printf("\n"); ClearList(L); printf("%d",EmptyList(L)); return 0;}
0 0
- 双向链表学习
- 双向链表学习总结
- 双向链表学习笔记
- [学习笔记]双向链表
- 双向链表学习笔记
- 双向链表的学习
- 链表学习--双向链表实现
- 链表学习--双向链表实现
- 链表学习--双向链表实现
- 链表学习笔记 --- 双向链表
- 数据结构学习之双向链表
- 学习 3.3.7双向链表
- C++学习笔记之双向链表
- 数据结构学习之双向链表结构
- C双向链表学习笔记
- 自我学习之双向链表
- 数据结构-双向链表(学习笔记)
- 数据结构学习之双向链表结构
- view的基本介绍
- C++命名空间
- rman
- sizeof与strlen
- 基于AJAX的长轮询(long-polling)方式实现COMET例子
- 双向链表学习
- js的call函数
- JDBC高级编程笔记
- android基础部分再学习---Binder
- IE7及以下多个行内元素时浮动元素折行不环绕
- Python-OpenCV(4)
- 电脑族应该怎么保护眼睛
- 单摄像头+激光测距
- DecimalFormat