问题遇到的现象和发生背景
C语言单链表输出数据把头指针也输出来了?
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int ElemType;
#include"SingleLinklist.h"
int Insert(int num,SingleLinklist *head,int length)
{
int j=-1;
SingleLinklist *p;
p=head;
while(p->next!=NULL&&j<length)
{
if(num>=p->data)
{
p=p->next;j++;
}
else
{
ListInsert(p,j,num);
}
}
}
int main()
{
SingleLinklist *head;
int i=0,length=0;
int num;
ListInitialize(&head);
do
{
scanf("%d",&num);
ListInsert(head,i,num);
length++;
i++;
}while(getchar()==' ');
printf("当前表的数据有如下:\n");
putlist(head);
以下为自定义的头文件:
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
typedef struct SingleNode{
ElemType data;
struct SingleNode *next;
}SingleLinklist,*Linklist;
void ListInitialize(SingleLinklist * *head)
{
if((*head=(SingleLinklist *) malloc(sizeof(SingleLinklist)))==NULL)
{
printf("建表失败!");
exit(1);
}
(*head)->next=NULL;
}
int ListLength(SingleLinklist *head)
{
SingleLinklist *p=head;
int size =0;
while(p->next!=NULL)
{
p=p->next;
size ++;
}
return size;
}
int ListGet(SingleLinklist *head,int i,ElemType *x)
{
SingleLinklist *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
printf("取元素位置出错");
return 0;
}
*x=p->data;
return 1;
}
int ListInsert(SingleLinklist *head,int i,ElemType x)
{
SingleLinklist *p,*q;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
printf("插入位置出错!");
return 0;
}
if((q=(SingleLinklist *) malloc (sizeof(SingleLinklist)))==NULL)
{
exit(1);
}
q->data=x;
q->next=p->next;
p->next=q;
return 1;
}
int ListDelete(SingleLinklist *head,int i,ElemType *x)
{
SingleLinklist *p,*s;
int j;
p=head;
j=-1;
while(p->next!=NULL&&p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
printf("删除位置出错!");
return 0;
}
s=p->next;
*x=s->data;
p->next=s->next;
free(s);
return 1;
}
void Destroy(SingleLinklist **head)
{
SingleLinklist *p,*p1;
p=*head;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
*head=NULL;
}
void putlist(SingleLinklist *head)
{
SingleLinklist *p;
p=head;
while(p!=NULL)
{
printf("%5d",p->data);
p=p->next;
}
}