考研数据结构第二章线性表双链表定义操作及代码实现
1.初始化操作
#define OK 1
#define ERROR 0
int InitDLinkList(DLinkList &L){
L = (DLinkList)malloc(sizeof(DNode));
if(L!=NULL){
L->prior = NULL;
L->next = NULL;
return OK;
}
else{
return ERROR;
}
}
2.头插法构建双链表
DLinkList CreateListF(DLinkList &L){
if(!L)
InitDLinkList(L);
DNode *node;
int x;
scanf("%d",&x);
while(x!=9999){
node->data=x;
node->next=L->next;
node->prior=L;
L->next->prior=node;
L->next=node;
scanf("%d",&x);
}
return L;
}
3.尾插法构建双链表
if(!L)
InitDLinkList(L);
DNode *node,*rnode;
rnode=L;
while(rnode->next!=NULL){
rnode=rnode->next;
}
rnode->next=node;
node->prior=rnode;
rnode->next=NULL;
return L;
}
全部代码
#include<stdlib.h>
using namespace std;
#define ElemType int
typedef struct DNode{
ElemType data;
struct DNode *prior,*next;
}DNode,*DLinkList;
//1.初始化操作
#define OK 1
#define ERROR 0
int InitDLinkList(DLinkList &L){
L = (DLinkList)malloc(sizeof(DNode));
if(L!=NULL){
L->prior = NULL;
L->next = NULL;
return OK;
}
else{
return ERROR;
}
}
//2.头插法构建双链表
DLinkList CreateListF(DLinkList &L){
if(!L)
InitDLinkList(L);
DNode *node;
int x;
scanf("%d",&x);
while(x!=9999){
node->data=x;
node->next=L->next;
node->prior=L;
L->next->prior=node;
L->next=node;
scanf("%d",&x);
}
return L;
}
//3.尾插法构建双链表
DLinkList CreateListR(DLinkList &L){
if(!L)
InitDLinkList(L);
DNode *node,*rnode;
rnode=L;
while(rnode->next!=NULL){
rnode=rnode->next;
}
rnode->next=node;
node->prior=rnode;
rnode->next=NULL;
return L;
}
int main(){
return 0;
}