代码如下,我在重要部分做了注解:#include <iostream> using namespace std;
struct test { char name[10]; float socre; test *next; };
test *head;//创建一个全局的引导进入链表的指针
test *create() { test *ls;//节点指针 test *le;//链尾指针 ls = new test;//把ls指向动态开辟的堆内存地址 cin>>ls->name>>ls->socre; head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否一上来就输入null跳出程序 le=ls;//把链尾指针设置成刚刚动态开辟的堆内存地址,用于等下设置le->next,也就是下一个节点的位置
在create()函数内部我们先写成这样: test *create() { test *ls;//节点指针 test *le;//链尾指针 ls = new test;//把ls指向动态开辟的堆内存地址 cin>>ls->name>>ls->socre; head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否一上来就输入null跳出程序 le=ls;//把链尾指针设置成刚刚动态开辟的堆内存地址,用于等下设置le->next,也就是下一个节点的位置
更多内容请看C/C++技术专题 电脑知识专题,或 完整代码如下:#include <iostream> using namespace std; struct test { int number; float socre; test *next; }; test *head;//创建一个全局的引导进入链表的指针
test *create() { test *ls;//节点指针 test *le;//链尾指针 ls = new test;//把ls指向动态开辟的堆内存地址 cin>>ls->number>>ls->socre; head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否一上来就输入null跳出程序 le=ls;//把链尾指针设置成刚刚动态开辟的堆内存地址,用于等下设置le->next,也就是下一个节点的位置
今天的程序在昨天的基础上做了进一步的修改,可以避免删除点找不到的情况,假如找不到删除点就退出函数! #include <iostream> using namespace std; struct test { int number; float socre; test *next; }; test *head;//创建一个全局的引导进入链表的指针
test *create() { test *ls;//节点指针 test *le;//链尾指针 ls = new test;//把ls指向动态开辟的堆内存地址 cout<<"请输入第一个节点number和节点score,输入0.0跳出函数"<<endl; cin>>ls->number>>ls->socre; head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否一上来就输入null跳出程序 le=ls;//把链尾指针设置成刚刚动态开辟的堆内存地址,用于等下设置le->next,也就是下一个节点的位置 while(ls->number!=0)//创建循环条件为ls->number的值不是null,用于循环添加节点 {