📄
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int Data;
typedef struct doublelink dblink;
struct doublelink{
Data data;
dblink *next;
dblink *prov;
Data Length;
};
/*初始化一个双向链表*/
dblink *Create(){
int data;
int cnt=0;
dblink *Head,*ProvNode,*NextNode;
Head=ProvNode=NextNode=(dblink *)malloc(sizeof(dblink));
printf("Enter the Node value:");
scanf("%d",&data);
while(data!=-1){
cnt++;
if(cnt==1){
Head->data=data;
Head->prov=NULL;
}else
NextNode->data=data;
NextNode->next=(dblink *)malloc(sizeof(dblink));
printf("Enter the Node value:");
scanf("%d",&data);
if(data==-1)
break;
ProvNode=NextNode;
NextNode=NextNode->next;
NextNode->prov=ProvNode;
}
NextNode->next=NULL;
printf("\nthe NextNode data is:%d\n",NextNode->next);
Head->Length=cnt;
return Head;
}
/*显示数据*/
void Show(dblink *Head){
dblink *p;
if(Head!=NULL){
p=Head;
while(p!=NULL){
printf("Node is:%d\n",p->data);
p=p->next;
}
}
}
/*获取链表的长度*/
int GetLength(dblink *GetLink){
return GetLink->Length;
}
/*添加元素*/
void Insert(dblink *Head,int data){
int flag=true;
int cnt=0;
dblink *CurrNode,*Temp,*SaveNode;
SaveNode=CurrNode=Temp=(dblink *)malloc(sizeof(dblink));
CurrNode=Head;
Temp->data=data;
while(CurrNode!=NULL){
if(CurrNode->data>=Temp->data){
cnt++;
if(cnt==1){
break;
}
Temp->next=CurrNode->next;
Temp->prov=CurrNode;
CurrNode->next->prov=Temp;
CurrNode->next=Temp;
Head->Length++;
flag=false;
break;
}
SaveNode=CurrNode;
CurrNode=CurrNode->next;
}
if(flag){/*如果插入的元素比前面的都大,那么就把你要差如的元素插入到最后一个节点*/
SaveNode->next=Temp;
Temp->prov=SaveNode;
Temp->next=NULL;
Head->Length++;
}
}
/*删除元素*/
int Delete(dblink *Head,int data){
int cnt=0,flag=false;
dblink *CurrNode,*ProvNode;
ProvNode=CurrNode=(dblink *)malloc(sizeof(dblink));
CurrNode=Head;
while(CurrNode!=NULL){
if(CurrNode->data==data){/*如果找到了这个元素把它删除*/
ProvNode->next=CurrNode->next;
CurrNode->next->prov=ProvNode;
Head->Length--;
flag=true;
free(CurrNode);
break;
}
ProvNode=CurrNode;
CurrNode=CurrNode->next;
}
return flag;//判断删除是否成功
}
main(){
int value;
dblink *Head;
Head=Create();
Show(Head);
printf("Now the Link Length is:%d\n",GetLength(Head));
printf("the insert data is:");
scanf("%d",&value);
Insert(Head,value);
Show(Head);
printf("Now the Link Length is:%d\n",GetLength(Head));
printf("the delete data is:");
scanf("%d",&value);
if(Delete(Head,value))
Show(Head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -