#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
#define FALSE 0
#define ERROR 0
typedef int ElemType;
typedef struct Node{
Node *next;
Node *prev;
ElemType data;
}DNode,*DBLink;
void CreateDBLink(DBLink *head){
head = (DBLink *)malloc(sizeof(DBLink));
if(NULL == head){
printf("Link malloc failed");
exit(ERROR);
}
(*head)->data = 0;
(*head)->next = NULL;
(*head)->prev = NULL;
}
void InitDBLink(DBLink head){
int n,i;
printf("input number of DBLink:");
scanf("%d",&n);
ElemType e;
DNode *pNode;
DBLink temp = head;
for(i = 1;i<=n;i++){
pNode = (DNode*)malloc(sizeof(DNode));
if(NULL == pNode){
printf("init node failed.");
exit(ERROR);
}
printf("input element %d : ",i);
scanf("%d",&e);
pNode->data = e;
pNode->next = NULL;
pNode->prev = temp;
temp->next = pNode;
temp = pNode;
}
}
void DestroyDBLink(DBLink *head){
DBLink ttemp,temp = (*head)->next;
while(NULL != temp)
{
ttemp= (temp)->next;
free(temp);
temp = (ttemp);
}
printf("let's gc head!\n");
free(*head);
ttemp = NULL;
// printf("%s",*head);
*head = NULL;//防止野指针出现
printf("destroy CcLink success! you are the best!");
}
void ClearDBLink(DBLink head){
DBLink temp = head->next; //p指向第一个结点
while(NULL != temp) //判断是否到链表尾部
{
temp = temp->next;
free(temp->prev);
}
head->next = head->prev = NULL; //最后设置头结点的两个指针域指向其本身
}
//只是完成这个函数,,
bool DBLinkIsEmpty(DBLink head){
if(head->next == NULL && head->prev == NULL)
return true;
else
return false;
}
int GetLength(DBLink head){
int len = 0; //len用来存储链表的长度
DBLink temp = head->next; //p指向第一个结点
while(NULL != temp)
{
len++;
temp = temp->next;
}
printf("length: %d",len);
return len;
}
void GetElem(DBLink head){
int j =1,i;
ElemType e;
if(i > GetLength(head)) // 首先对i的合法性进行判断
{
printf("位置不合法!");
//exit(ERROR);
return;
}
DBLink temp = head->next; //p指向第一个结点
while(NULL != temp && j < i) //顺指针向后查找直到p指向第i个元素
{
j++;
temp = temp->next;
}
if(temp == head || j > i) //判断查找完后是否有异常情况
{
printf("没找到!");
return;
}
e = temp->data; //返回第i个元素的值
//return 0;
}
//void LocatElem() 通过元素值或者通过index
int main(){
DBLink head;
CreateDBLink(&head);
return 0;
}
双向链表
最新推荐文章于 2022-03-20 21:58:38 发布