当前位置: 代码迷 >> C语言 >> 求助:关于双向链表
  详细解决方案

求助:关于双向链表

热度:207   发布时间:2005-12-16 16:53:00.0
求助:关于双向链表
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define OK 1
#define ERROR 0
typedef struct DLNode{
int data;
struct DLNode *prior,*next;
}DLNode,*DLinkList;
int ListInsert(DLinkList,int,int);
int ListDelete(DLinkList,int,int*);
DLinkList GetElem(DLinkList,int);
main()
{
DLinkList head;
head->next=head->prior=head;
ListInsert(head,1,3);
getch ();
return 0;
}
int ListInsert(DLinkList l,int i,int e)
{
DLinkList p,s;
if(!(p=GetElem(l,i)))
return ERROR;
if(!(s=(DLinkList)malloc(sizeof(DLNode))))
return ERROR;
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
return OK;
}
DLinkList GetElem(DLinkList l,int i)
{
DLinkList p;
int j=0;
p=l->next;
while(p&&j<i){
p=p->next;
++j;
}
if(!p || j>i)
return ERROR;
return p;
}
int ListDelete(DLinkList l,int i,int *e)
{
DLinkList p;
if(!(p=GetElem(l,i)))
return ERROR;
*e=p->data;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
return OK;
}
这是一个双向链表的小程序;
为什么编译就出现"该内存不能为"written"";
搜索更多相关的解决方案: 链表  

----------------解决方案--------------------------------------------------------
指针没有指乱么?
DLinkList head;
head->next=head->prior=head;

[此贴子已经被作者于2005-12-16 17:28:21编辑过]


----------------解决方案--------------------------------------------------------
你这个双向链表的最后一个节点的next是指向那里的?
----------------解决方案--------------------------------------------------------
  相关解决方案