标签:let des 一个 locate insert malloc 链表 创建 printf
#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 = e; s->next = p->next; // 判断是否插入末尾元素上。 if (p->next != NULL) { p->next->prior = s; } s->prior = p; p->next = s; } } int ListDelete(DLinkList *&L, int i, ElemType &e) { /* 找到第个元素的前一个元素 判断是否为空,不为空这删除,为空则返回0 如果是最后一个元素 */ int j = 0; DLinkList *p = L; DLinkList *q; while (p != NULL &&j<i-1) { p = p->next; j++; } if (p == NULL) // 为什么要判断是否为NULL,对空进行取值会BUG { return 0; } else { q = p->next; if (q == NULL) { return 0; } else { e = q->data; p->next = q->next; if (q->next != NULL) { q->next->prior = p; } free(q); return 1; } } }
标签:let des 一个 locate insert malloc 链表 创建 printf
原文地址:http://www.cnblogs.com/tuqunfu/p/7226398.html