编写程序,完成3个功能。
⑴ 创建一个链表,每个链表结点包括2个成员:1个数据成员和1个next指针成员,要求从键盘输入数据成员的值,输入0表示数据输入结束;
⑵ 打印链表中每个结点的数据成员的值,以及这个链表结点的起始地址;
⑶ 释放链表占用的所有内存空间(一个结点一个结点的释放)。
要求使用typedef机制给结点的结构体类型起一个简短的类型名字,并使用这个短类型名来定义变量。
测试数据为:
输入数据为:2 5 8 9 11 0
显示链表数据成员为:2 5 8 9 11
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>
using namespace std;
typedef struct student{
int data;
struct student *next;
} node;
//创建链表
node *creat(){
node *head,*p,*s;
int x,cycle=1;
head =(node *)malloc(sizeof(node));
p=head;
while(cycle){
cin >>x;
if(x!=0){
s=(node *)malloc(sizeof(node));
s->data=x;
p->next=s;
p=s;
}else cycle=0;
}
head=head->next;
p->next=NULL;
return head;
}
//求链表长度
int lengthNode(node *head){
int n=0;
node *p;
p=head;
while(p!=NULL){
p=p->next;
n++;
}
return n;
}
//打印链表
void printNode(node *head){
node *p;
int n;
n=lengthNode(head);
p=head;
if(head!=NULL){
while(p!=NULL){
cout<< p->data<<' ';
p=p->next;
}
}
}
//主函数
int main(){
node *head=NULL;
head=creat();
printNode(head);
return 0;
}