#include<iostream> #include<string.h> #include<stdlib.h> using namespace std; struct Student { int id; char name[16]; Student* next; }; Student m_head = {0};//定义了一个有头结点 void add(Student* obj) { //添加一个对象,插入一个对象 obj->next = m_head.next; m_head.next = obj; } //也可以把对象附加到末尾 /*void add(Student* obj) { Student* p = &m_head; while(p->next) p = p->next;//找到最后一个对象 p->next = obj;//把obj挂在最后一个对象后面 obj->next = NULL;//现在obj作为最后一个对象 }*/ //用户输入数据 //返回值,0个成功;-1表示用户输入有误 int user_input(Student* obj) { printf("学号"); scanf("%d",&obj->id); printf("姓名"); scanf("%s",obj->name); return 0; } //有头链表的遍历 在遍历的时候不包含头结点 void show_all() { Student* p = m_head.next; while(p) { printf("ID: %d, name: %s\n",p->id,p->name); p = p->next;//下一个对象 } } int main() { //链表中的对象一般都是动态创建的,注意 //动态创建对象的生命周期,自malloc之时生效,到free之后失效 while(1) { Student* obj_1 = (Student*)malloc(sizeof(Student)); // obj->id = 12; // strcpy(obj->name,"X"); if(user_input(obj_1)==0) { add(obj_1); } else { free(obj_1); } printf("aaaa\n"); } return 0; }
有头链表的创建
猜你喜欢
转载自www.cnblogs.com/chuxinbubian/p/10668400.html
今日推荐
周排行