链表基础学习(二)
来源:互联网 发布:舒适达抗敏感牙膏 知乎 编辑:程序博客网 时间:2024/06/14 04:09
本文主要介绍双向链表的构造以及基本操作
头文件
#ifndef double_H_#define double_H_struct dnode;typedef struct dnode *dlist_point;typedef dlist_point Dlist;typedef dlist_point Position;//插入函数void Insert1(Dlist L,Position P,int X);void Insert2(DList L,int Index,int X);//删除函数void Delete1(Dlist L,Position P);void Delete2(Dlist L,int Index);//遍历函数void traverse(Dlist L);#endif // double_H
双向链表的定义以及相应操作定义
#include <stdio.h>#include <stdlib.h>#include "main.h"struct dnode{ int element; Position pre; Position next;};//插入函数,P就是L中的一个节点void Insert1(Dlist L,Position P,int X){ Position tem=L=malloc(sizeof(struct dnode)); if(tem==NULL) { printf("memory is not enough\n"); exit(1); } tem->pre=P; tem->next=P->next; P->next=tem; tem->next->pre=tem;}//在链表的第Index位置上插入void Insert2(Dlist L,int Index,int X){ Position P=L; Position tem=malloc(sizeof(struct dnode)); int ind=0; int suc=0; while(P->next!=NULL) { if(ind==X-1) { tem->pre=P; tem->next=P->next; P->next->pre=tem; P->next=tem; tem->element=X; suc=1; printf("insert success\n"); break; } else { ind=ind+1; P=P->next; } } if(suc==0) printf("the dlist do not have this position");}//删除函数void Delete1(Dlist L,Position P){ Position tem=P->next->next; tem->pre=P; P->next=tem;}//删除第i个位置上的元素void Delete2(Dlist L,int Index){ Position P=L; int ind=0,suc=0; while(P->next!=NULL) { if(ind==Index) { P->pre->next=P->next; P->next->pre=P->pre; suc=1; printf("delete success"); break; } ind=ind+1; P=P->next; } if(suc==0) printf("this list do not have this position");}//遍历void traverse(Dlist L){ Position P=L->next; printf("dlist is\n"); while(P->next!=NULL) { printf("%d\n",P->element); P=P->next; }}
主程序
int main(){ Dlist head=malloc(sizeof(struct dnode)); Position tail=malloc(sizeof(struct dnode)); head->next=tail; head->pre=NULL; tail->pre=head; tail->next=NULL; Insert2(head,1,1); Insert2(head,2,2); Insert2(head,3,3); Insert2(head,4,4); traverse(head); Delete2(head,2); traverse(head); return 0;}
0 0
- 链表基础学习(二)
- 基础学习(二)
- XML学习基础(二)
- jQuery基础学习(二)
- jQuery基础学习(二)
- Java基础学习(二)
- C基础学习(二)
- Oracle学习基础(二)
- javaScript 基础学习(二)
- C#基础学习(二)
- MongDB基础学习(二)
- jQuery基础学习(二)
- MYSQL基础学习(二)
- 多线程学习-基础(二)
- Jess学习基础(二)
- Linux基础学习(二)
- MongDB基础学习(二)
- Python基础学习(二)
- 常用快递api
- dede 跳转属性直接显示跳转网址
- iOS strong 和weak的形象理解(真的很精典!)
- go defer关键字
- XML技术
- 链表基础学习(二)
- 初探ZeroMQ(一)认识ZeroMQ
- 转王垠:编程的宗派
- python学习之--小题目 针对快速教程
- MapReduce:详解Shuffle过程
- 图片文件的常见操作
- C语言中四个数比较大小问题
- 练习4: 设计字符串反转函数,理解字符串,数组,指针的内在联系。
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解