首页 > 代码库 > 双向链表
双向链表
#include "stdafx.h" #include <malloc.h> typedef char ElemType; typedef struct DNode { ElemType data; struct DNode * prior; struct DNode * next; }DLinkList; void InintList(DLinkList * &L) { L = (DLinkList *)malloc(sizeof(DLinkList)); L->next = L->prior = NULL; } void DestroyList(DLinkList * &L) { DLinkList *p = L; DLinkList *q = p->next; while (q!=NULL) { free(p); p = q; q = p->next; } free(p); } int ListEmpty(DLinkList *L) { return(L->next == NULL); } int ListLength(DLinkList *L) { DLinkList *p = L; int i = 0; while (p->next!=NULL) { i++; p = p->next; } return i; } void DispList(DLinkList *L) { DLinkList *p = L->next; while (p!=NULL) { printf_s("%c", p->data); p = p->next; } printf_s("\n"); } int GetElem(DLinkList *L,int i,ElemType &e) { int j = 0; DLinkList *p = L; while (p!=NULL && j<i) { p = p->next; j++; } if (p == NULL) { return 0; } e = p->data; return 1; } int LocateElem(DLinkList *L, ElemType e) { int j = 0; DLinkList *p = L->next; while (p!=NULL && p->data!=e ) { j++; p = p->next; } if (p == NULL) { return 0; } else { return j; } } int ListInsert(DLinkList * &L, int i, ElemType e) { /* 找到第i个元素的前一个元素 不存在第i个元素则为NULL返回0 找到第i个元素,则进行创建节点插入操作,返回0, */ int j = 0; DLinkList *p = L; DLinkList *s; while (p!=NULL &&j<i-1) { p = p->next; j++; } if (p == NULL) { return 0; } else { s = (DLinkList *)malloc(sizeof(DLinkList)); s->data = http://www.mamicode.com/e;>
双向链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。