⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dllist.h

📁 基于C语言的数据结构算法,双向链表定义函数.
💻 H
字号:
typedef struct
{DNode *front,*currptr;
 int size;
}DLList;
void SetDLList(DLList *L);
void FreeDLList(DLList *L);
int DLListSize(DLList *L);
int DLListEmpty(DLList *L);
int DLListLocate(DLList *L,DataType item);
DataType DLListGetData(DLList *L,int pos);
void DLListSetData(DLList *L,DataType item,int pos);
void DLListDelete(DLList *L,int pos);
void ClearDLList(DLList *L);
void DLListInsertR(DLList *L,DataType item,int pos);

void SetDLList(DLList *L)
	{L->front=(DNode *)malloc(sizeof(DNode));
	 if(L->front==NULL)
		{printf("overflow");
		 exit(1);
		}
	 SetDNode(L->front);
	 L->currptr=L->front;
	 L->size=0;
	}
void FreeDLList(DLList *L)
	{while(NextDNodeRight(L->front)!=L->front)
		DeleteDNode(NextDNodeRight(L->front));
	 free(L->front);
	}
int DLListSize(DLList *L)
	{return(L->size);
	}
int DLListEmpty(DLList *L)
	{if(L->size==0)
		return(1);
	 return(0);
	}
int DLListLocate(DLList *L,DataType item)
	{int i;
	 DNode *ptr;
	 ptr=NextDNodeRight(L->front);
	 for(i=0;ptr!=L->front;i++)
		{if((item.x==ptr->data.x)&&(item.y==ptr->data.y))
			return(i);
		 ptr=NextDNodeRight(ptr);
		}
	 return(-1);
	}
DataType DLListGetData(DLList *L,int pos)
	{int i;
	 DNode *ptr;
	 if(pos<0||pos>L->size-1)
		{printf("Pos is out of range!\n");
		 exit(1);
		}
	 ptr=NextDNodeRight(L->front);
	 for(i=0;i<pos;i++)
		ptr=NextDNodeRight(ptr);
		return(ptr->data);
	}
void DLListSetData(DLList *L,DataType item,int pos)
{
     int i;
     DNode *ptr;
     if(pos<0||pos>L->size-1)
		{printf("Pos in Delete is illegal");
		 exit(1);
		}
     ptr=NextDNodeRight(L->front);
     i=0;
     while(i<pos)
     {
       i++;
       ptr=NextDNodeRight(ptr);
     }
     ptr->data=item;
}
void DLListDelete(DLList *L,int pos)
	{int i;
	 DNode *ptr,*p;
	 if(pos<0||pos>L->size-1)
		{printf("Pos in Delete is illegal");
		 exit(1);
		}
	 ptr=L->front;p=NextDNodeRight(ptr);
	 i=0;
	 while(i<pos)
        {
           i++;
           ptr=p;p=NextDNodeRight(ptr);
        }
	 DeleteDNode(p);
	 L->size--;
	}
void ClearDLList(DLList *L)
	{while(NextDNodeRight(L->front)!=L->front)
		DeleteDNode(NextDNodeRight(L->front));
	 L->currptr=L->front;
	 L->size=0;
	}	
void DLListInsertR(DLList *L,DataType item,int pos)
{
     int i;
     DNode *ptr,*p;
     if(pos<0||pos>L->size)
		{printf("Pos in Insert is illegal\n");
		 exit(1);
		}
     i=0;
     ptr=L->front;p=NextDNodeRight(ptr);
     while(i<pos)
        {
           i++;
           ptr=p;p=NextDNodeRight(ptr);
        }
     InsertRight(ptr,item);
     L->size++;
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -