一个链表的创建有关问题,不带头节点从头插入
一个链表的创建问题,不带头节点从头插入
#include <stdio.h>
#include <malloc.h>
typedef struct node{
int date;
struct node *next;
}NODE;
NODE *creat_list();
void insert_list(NODE *head,int pos,int val);
void delete_list(NODE *head,int pos);
void display_list(NODE *head);
int main(int argc, char *argv[])
{
NODE *head;
int pos, val;
head=creat_list();
//insert_list(head,pos,val);
display_list(head);
//delete_list(head,pos);
return 0;
}
NODE *creat_list()
{
NODE *head=NULL,*p,*ph;
int len;
int i;
int date;
printf("请输入数据的长度:");
scanf("%d",&len);
for(i=0;i<len;i++)
{
p=(NODE *)malloc(sizeof(NODE));
printf("请输入数据:");
scanf("%d",&date);
p->date=date;
if(NULL == head)
{
head=p;
p->next=NULL;
}
else
{
ph->next=p;
head=ph;
}
ph=p;
}
return head;
}
void display_list(NODE *head)
{
NODE *p=head;
while(NULL!=p)
{
printf("%d\n",p->date);
p=p->next;
}
}
------解决方案--------------------
#include <stdio.h>
#include <malloc.h>
typedef struct node{
int date;
struct node *next;
}NODE;
NODE *creat_list();
void insert_list(NODE *head,int pos,int val);
void delete_list(NODE *head,int pos);
void display_list(NODE *head);
int main(int argc, char *argv[])
{
NODE *head;
//int pos, val;
head=creat_list();
//insert_list(head,pos,val);
display_list(head);
//delete_list(head,pos);
return 0;
}
NODE *creat_list()
{
NODE *head=NULL,*p;
int len;
int i;
int date;
printf("请输入数据的长度:");
scanf("%d",&len);
for(i=0;i<len;i++)
{
p=(NODE *)malloc(sizeof(NODE));
printf("请输入数据:");
scanf("%d",&date);
p->date=date;
if(NULL == head)
{
head=p;
p->next=NULL;
}
else
{
p->next=head->next;
head->next=p;
}
}
return head;
}
void display_list(NODE *head)
{
NODE *p=head;
while(NULL!=p)
{
printf("%d\n",p->date);
p=p->next;
}
}
能输出,但乱序,我就不知道什么原因了
------解决方案--------------------
#include <stdio.h>
#include <malloc.h>
typedef struct node{
int date;
struct node *next;
}NODE;
NODE *creat_list();
void insert_list(NODE *head,int pos,int val);
void delete_list(NODE *head,int pos);
void display_list(NODE *head);
int main(int argc, char *argv[])
{
NODE *head;
int pos, val;
head=creat_list();
//insert_list(head,pos,val);
display_list(head);
//delete_list(head,pos);
return 0;
}
NODE *creat_list()
{
NODE *head=NULL,*p,*ph;
int len;
int i;
int date;
printf("请输入数据的长度:");
scanf("%d",&len);
for(i=0;i<len;i++)
{
p=(NODE *)malloc(sizeof(NODE));
printf("请输入数据:");
scanf("%d",&date);
p->date=date;
if(NULL == head)
{
head=p;
p->next=NULL;
}
else
{
ph->next=p;
head=ph;
}
ph=p;
}
return head;
}
void display_list(NODE *head)
{
NODE *p=head;
while(NULL!=p)
{
printf("%d\n",p->date);
p=p->next;
}
}
------解决方案--------------------
#include <stdio.h>
#include <malloc.h>
typedef struct node{
int date;
struct node *next;
}NODE;
NODE *creat_list();
void insert_list(NODE *head,int pos,int val);
void delete_list(NODE *head,int pos);
void display_list(NODE *head);
int main(int argc, char *argv[])
{
NODE *head;
//int pos, val;
head=creat_list();
//insert_list(head,pos,val);
display_list(head);
//delete_list(head,pos);
return 0;
}
NODE *creat_list()
{
NODE *head=NULL,*p;
int len;
int i;
int date;
printf("请输入数据的长度:");
scanf("%d",&len);
for(i=0;i<len;i++)
{
p=(NODE *)malloc(sizeof(NODE));
printf("请输入数据:");
scanf("%d",&date);
p->date=date;
if(NULL == head)
{
head=p;
p->next=NULL;
}
else
{
p->next=head->next;
head->next=p;
}
}
return head;
}
void display_list(NODE *head)
{
NODE *p=head;
while(NULL!=p)
{
printf("%d\n",p->date);
p=p->next;
}
}
能输出,但乱序,我就不知道什么原因了
------解决方案--------------------