#include <iostream>
using namespace std;
/*双向链表类型定义*/
typedef struct duNode
{
char data;
struct duNode *prior;
struct duNode *next;
}duNode;
typedef duNode *duLinklist;//指针类型,故访问它的成员用“->”。
/*初始化双向链表*/
void initLinklist_Du(duLinklist &L)//此处叫做引用调用,即实参和形参共用一个地址。
{
L=new duNode;
L->next=L;
L->prior=L;
}
/*取某个结点的位置*/
duNode *getElemP_D(duLinklist L,int i)
{
duNode *p;
int count;
p=L->next;
count=1;
while(p!=L&&count<i-1)
{
p=p->next;
count++;
}
if(p==L||count>i-1)
return NULL;
else
return p->next;
}
/*求双向链表的长度*/
int lengthLinklist_Du(duLinklist &L)
{
duNode *p;
int count;
p=L->next;
count=0;
while(p!=L)
{
p=p->next;
count++;
}
return count;
}
/*插入*/
void insertList_Du(duLinklist &L,int i,char x)
{
duNode *p;
duNode *s;
p=getElemP_D(L,i);
if(p==NULL)
cout<<"Poision Error!";
s=new duNode;
s->data=x;
s->prior=p->prior;
s->next=p;
p->prior->next=s;
p->prior=s;
}
/*删除*/
void deleteList_Du(duLinklist &L,int i)
{
duNode *p;
p=getElemP_D(L,i);
if(p==NULL)
cout<<"Poision Error!";
p->next->prior=p->prior;
p->prior->next=p->next;
delete p;
}
/*创建一个双向链表*/
void creatLinklist_Du(duLinklist &L,int n)
{
duNode *p;
duNode *s;
initLinklist_Du(L);
p=L;
int i;
for(i=0;i<n;i++)
{
s=new duNode;//这里忘记给S分配空间了,所以出错了。
cin>>s->data;
s->next=L;
s->prior=p;
p->next=s;
L->prior=s;
p=s;
}
}
/*输出双向链表中的元素*/
void outputLinklist_Du(duLinklist &L)
{
duNode *p;
p=L->next;
int i;
for(i=0;i<lengthLinklist_Du(L);i++)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void main()
{
duLinklist L;
creatLinklist_Du(L,3);
//outputLinklist_Du(L);
}
出错了,要先自己仔细看看,自己找一下毛病,因为没有人比自己更熟悉自己的代码了!实在看不出哪错了,再去向别人请教!嘿嘿,努力啊!
标签:count,初始化,duLinklist,int,C++,next,prior,双链,duNode From: https://blog.51cto.com/u_5173797/7252045