读书人

一个链表的创建有关问题不带头节点从

发布时间: 2012-08-03 00:12:14 作者: rapoo

一个链表的创建问题,不带头节点从头插入
#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 *hea……

读书人网 >C语言

热点推荐