Chinaunix
标题:
求助---向双链表中插入数据问题
[打印本页]
作者:
mjf999
时间:
2006-04-11 22:20
标题:
求助---向双链表中插入数据问题
#include <stdio.h>
typedef char elemtype;
typedef struct node
{
elemtype data;
struct node *next,*prior;
}lnode,*linklist;
lnode *creat() /*建立双链表*/
{
elemtype x;
lnode *h,*p,*t;
h=(lnode *)malloc(sizeof(lnode));
h->next=h;
t=h;
while((x=getchar())!='\n')
{
p=(lnode *)malloc(sizeof(lnode));
p->data=x;
p->next=h;
p->prior=h;
t->next=p;
t=p;
}
return(h);
}
int insert(lnode *h,int i,elemtype x) /*向第i个元素前插入S结点*/
{ int j=1;
lnode *p,*s;
p=h->next;
while(p!=h&&j<i)
{ ++j;
p=p->next;
}
if(i>0&&i==j)
{
s=(lnode *)malloc(sizeof(lnode));
s->data=x;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
return(1);
}
else
return(0);
}
int /*主函数*/
main(void)
{ int j;
elemtype c='a',d='b';
lnode *h,*p;
h=creat();
p=h->next;
while(p!=h)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
if(insert(h,3,c))
{
while(p!=h)
{
printf("%c",p->data);
p=p->next;
}
}
getch();
return(0);
}
复制代码
感觉没什么问题,但是不能输出插入后的新表???大家帮忙看看,谢谢!!!
作者:
lenovo
时间:
2006-04-11 22:41
楼主的是双向循环链表吗?
你看这里是不是要改一下。
lnode *creat() /*建立双链表*/
{
elemtype x;
lnode *h,*p,*t;
h=(lnode *)malloc(sizeof(lnode));
h->next=h;
t=h;
while((x=getchar())!='\n')
{
p=(lnode *)malloc(sizeof(lnode));
p->data=x;
p->next=h;
p->prior=t;//here
t->next=p;
t=p;
}
return(h);
}
复制代码
作者:
mjf999
时间:
2006-04-12 13:10
哦,对,那里是不对,呵呵,但改完还是不能完成插入啊??
还是要感谢lenovo大哥给我看程序!!!
作者:
lenovo
时间:
2006-04-12 14:00
if(insert(h,3,c))
{
p = h -> next; //here
while(p!=h)
{
printf("%c",p->data);
p=p->next;
}
}
复制代码
作者:
mjf999
时间:
2006-04-12 14:06
哦,终于弄懂了,还是基础不牢啊,呵呵!
再次谢谢lenovo大哥!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2