#include<stdio.h>
#include<stdlib.h>
class point //节点类
{
public:
int a //节点值
point *next//next指针
}
void newlast(point *&p,int i) //在*p所指的链表的最后新建一个值为i的节点
{
point *q,*o
q=p
while(q->next)
{
q=q->next
}
printf("%d\n",q->a)
o=(point *)malloc(sizeof(point))
o->a=i
q->next=o
o->next=NULL //结束标记
}
void show(point *p)//输出指针p所指链表
{
point *q
q=p
while(q)
{
printf("%d\t",q->a)
q=q->next
}
printf("\n")
}
int main()
{
point b1,b2,b3
point *p
b1.a=1
b2.a=2
b3.a=3
p=&b1
b1.next=&b2
b2.next=&b3
b3.next=NULL //结束标记
show(p)
newlast(p,4)
show(p)
return 0
}
我给你个评价,错误百出, 你没有理解链表,对着书好好做几次。我一条一条给你评void list::AddList(int aData)
{
int count
Node *p
p = head
//之所有没进while 是因为head==NULL,
//也就是你的链表为空链表
//可能你的链表的表头不是以空元素来代替,
while(p != NULL)
{
count++
p = p->next
}
//for循环的意思是找到第count元素吧?
//但是你没有 p = p->next,p一直在原地踏步
for(int i = 0i<counti++)
{
//while循环结束后,p一定为空,p->next会出致命
//但你的count也为0,所以for循环也进不去.
if(p->next == NULL)
p->Data = aData
}
}
//更改: 说实话,你的算法不好,
//为了让你知道错哪里,我尽量按你的思路去做吧.
void list::AddList( int dData )
{
int count = 0//下次记得初始化
//产生一个节点,初始化最好用构造函数.
Node* pNode = new Node
pNode->Data = dData
pNode->next = NULL
if ( head == NULL )//链表为空,直接赋值给head
{
head = pNode
return
}
Node* p = head
while( p != NULL )
{
count++
p = p->next
}
p = head//while结束后,p一定为空,重新赋值
for( int i = 0i <count-1i++ ) //只能是count-1
{
p = p->next
}
//结束后p指向最后一个元素
p->next = pNode//把结点加入链表
return
}
void list::DeleteList(int bData)
{
Node*p,*q
p = head//没有对head==NULL判断,会出致命
for(int j = 0j<5j++)//为什么只找5次,节点上限为5?
{
if(p->Data == bData)
{
q->next = q->next//这个......相当于 i = i
delete p
}
}
} //我知道q没有初始化,但是不知道要怎么初始化。
更正:
void list::DeleteList( int bData )
{
if ( head == NULL )//链表为空,无所谓删除
return
Node* pCurr = NULL
Node* pTemp = NULL
pCurr= head
while( pCurr != NULL )
{
if ( pCurr->Data != bData )//当前不是,向后找
{
pTemp = pCurr//将当前的保存
pCurr = pCurr->next
}
else
break
}
if ( pCurr == NULL )//没有符合要求的结点
return
if ( pTemp == NULL )//如果只有一个节点, pTemp == NULL
{
delete pCurr
head = NULL//这句一定要写
}
else
{
pTemp->next = pCurr->next
delete pCurr
}
return
}
你的printList()的输出函数不执行,是因为head==NULL, 你的是一个空链表
InsertList也有很大问题,都是基本的,好好看书吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)