//问题描述:创建一个单链表,输入,并输出链表值。
#include<iostream>
#include<cmath>
using namespace std;
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
struct student*creat()//建立链表结构指针函数定义
{
struct student *head,*p1,*p2;
int n=0;
p1=p2=(struct student*)malloc(LEN);//开辟动态储存空间,并将其地址赋给p1,p2
cin>>p1->num;
cin>>p1->score;//往p1指向的空间结点填装数据
head=NULL;//头指针为空
while(p1->num!=0)
{
n=n+1;//以此来判断是第几个结点
if(n==1)
head=p1;
else
p2->next=p1; //将p1的值赋给p2->next,使p2->next指向p1所指的结点,此时p2还在前一个结点
p2=p1; //将p1的值赋给p2,移动指针p2,使p2指向p1所指的结点
p1=(struct student*)malloc(LEN); //继续开辟空间,将其地址赋给p1
cin>>p1->num;
cin>>p1->score;//往新开辟的结点填装数据
}
p2->next=NULL;//将最后一个结点的指针域制空
return(head);//返回头指针
}
void print(student *head)
{
while(head)
{
cout<<head->num<<" "<<head->score<<" ";
head=head->next;
}
}
void main()
{
student *stu=creat();
print(stu);
}
#include<iostream>
#include<cmath>
using namespace std;
struct student
{
int num;
char name[15];
struct student *next;
};
int main()
{
struct student a={1,"lihua"},b={2,"zhangjie"},c={3,"cuisun"};
struct student *head,*p;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
for(p=head;p!=NULL;p=p->next)
cout<<p->num<<" "<<p->name<<" ";
cout<<endl;
return 0;
}