当前位置:我的异常网» C语言 » 下面程序输出结果不,如输出的链表长度结果不对,不
下面程序输出结果不,如输出的链表长度结果不对,不知有关问题在哪里。请高手看下
www.myexceptions.net 网友分享于:2013-09-18 浏览:8次
下面程序输出结果不,如输出的链表长度结果不对,不知问题在哪里。请高手看下。
/*
题目:
时间:
目的:
功能:
*/
#include
#include
#include
typedef struct Node
{
int data;
struct Node* pNext;
}* PNODE, NODE;
PNODE CreateList(void)
{
int i;
int value;//输入节点的值。
int length;
PNODE pHead = (PNODE)malloc(sizeof(NODE));//pHead指向了头节点。
if(NULL == pHead)
{
printf("分配失败,程序终止");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;//当一个链表只有一个节点的时候
printf("请输入要生成结点的个数:length = ");
scanf("%d", &length);
for(int i=0; i
{
printf("请输入第%d个节点的值:", i+1);
scanf("%d", &value);
PNODE pNEW = (PNODE)malloc(sizeof(NODE));//生成新的节点。pNEW为临时节点。
if(NULL == pNEW)
{
printf("内存分配失败,程序终止。\n");
exit(-1);
}
pNEW->data = value;
pHead->pNext = pNEW;//把pNEW挂到pHead->pNext上。尾节点的后面,链表还没有造出来。
pNEW->pNext = NULL;//指针域清空,尾节点指针域为空。
pTail = pNEW;
}
return pHead;
}
//链表里不能用p++,因为链表不是连续的。
void TraverseList(PNODE pHead)//链表为空也有一个头节点。pHead指向它。空链表头节点指针域也为空。
{
PNODE p = pHead->pNext;
while(NULL != p)
{
printf("输出数据为:%d", p->data);
p = p->pNext;
}
printf("\n");
return;
}
bool IsEmpty(PNODE pHead)
{
if(NULL == pHead->pNext)
{
return true;
}
else
{
return false;
}
}
int LengthList(PNODE pHead)
{
PNODE p = pHead->pNext;
int length = 0;
while(NULL != p)
{
length++;
p = p->pNext;
}
return length;
}
bool InsertList(PNODE pHead, int position, int value)
{
int i = 0;
PNODE p = pHead;
while(NULL != p && i
{
p = p->pNext;
++i;
}
if(i
{
return false;
}
PNODE pNEW = (PNODE)malloc(sizeof(NODE));
if(NULL == pNEW)
{
printf("动态分配内存失败!");
exit(-1);
}
pNEW->data = value;
PNODE q = p->pNext;
文章评论