C语言实现数据结构和双向链表操作

2020-01-06 17:05:35丽君

4. 在指定结点之后插入新结点Insert_DLinkListAfter(DuLinkList p,ElemType x)


//在指定结点之后插入新结点 
void Insert_DLinkListAfter(DuLinkList p,ElemType x){ 
 
 DuLinkList newNode; 
 newNode = (DuLinkList)malloc(sizeof(DuLNode)); 
 newNode->data = x; 
 
 //当插入位置是最后一个结点之后时 
 if(p->next == NULL){ 
 p->next = newNode; 
 newNode->prior = p; 
 newNode->next = NULL; 
 } 
 else{ 
 newNode->next = p->next; 
 p->next->prior = newNode; 
 p->next = newNode; 
 newNode->prior = p; 
 } 
} 

5. 删除指定结点Delete_DLinkList(DuLinkList p)


//删除指定结点 
void Delete_DLinkList(DuLinkList p){ 
 //如果删除的是最后一个元素 
 if(p->next == NULL) 
 p->prior->next = NULL; 
 
 else{ 
 p->prior->next = p->next; 
 p->next->prior = p->prior; 
 
 } 
 free(p); 
} 

6. 后链输出双向链表Print_DLinkListN(DuLinkList L)


//后链输出双向链表 
void Print_DLinkListN(DuLinkList p){ 
 
 while(p != NULL){ 
 printf("%dt",p->data); 
 p = p->next; 
 } 
 printf("n"); 
 
} 

  7.前链输出双向链表Print_DLinkListP(DuLinkList p)


//前链输出双向链表 
void Print_DLinkListP(DuLinkList p){ 
 
 while(p != NULL){ 
 printf("%dt",p->data); 
 p = p-prior; 
 } 
 printf("n"); 
} 
 

至于双向链表的其他操作,如定位,和单链表的操作类同,不再赘述。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


注:相关教程知识阅读请移步到C++教程频道。