#include
#include
struct node
{
int data;
struct node* next;
};
void printlist(struct node* phead)//打印
{
struct node* pmove=phead;
while(pmove!=NULL)
{
printf("%d",pmove->data);
pmove=pmove->next;
}
}
void insertbytail(struct node** phead,int x)//尾插
{
struct node* newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=x;
newnode->next=NULL;
struct node* tail=*phead;//定义一个指针tail指向第一个结点
if(*phead==NULL)
{
phead=newnode;
}
else
{
while(tail!=NULL)
{
tail=tail->next;
}
tail->next=newnode;
}
}
void structtest()
{
struct node plist=NULL;
insertbytail(&plist,1);
insertbytail(&plist,2);
printlist(plist);
}
int main()
{ void structtest();
structtest();
system("pause");
return 0;
}
c上无表头的单链表
代码可以运行,但是没有结果。
能不能指出问题并在我的代码基础上改正。
insertbytail()函数中,while(tail!=NULL) 这里改成 while(tail->next!=NULL)
运行结果如下:
完整代码如下:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* next;
};
void printlist(struct node* phead)//打印
{
struct node* pmove=phead;
while(pmove!=NULL)
{
printf("%d",pmove->data);
pmove=pmove->next;
}
}
void insertbytail(struct node** phead,int x)//尾插
{
struct node* newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=x;
newnode->next=NULL;
struct node* tail=*phead;//定义一个指针tail指向第一个结点
if(*phead==NULL)
{
*phead=newnode;
}
else
{
while(tail->next!=NULL)
{
tail=tail->next;
}
tail->next=newnode;
}
}
void structtest()
{
struct node* plist=NULL;
insertbytail(&plist,1);
insertbytail(&plist,2);
printlist(plist);
}
int main()
{
void structtest();
structtest();
system("pause");
return 0;
}