用c++实现一个单链表
逐个插入数据,以换行结尾(没做到就先输入一个数量n)
然后遍历链表打印数据
第一个是在主函数进行输入(尾插法)
#include<iostream>
using namespace std;
//声明结构体
typedef struct Lnode{
int data;
Lnode* nex;
}lnode,*LinkList;
//插入数据(表头+数据版)
LinkList TaiList(LinkList L,int data){
//1、创建新结点
LinkList new_node = (LinkList)malloc(sizeof(Lnode));
new_node->data = data;
new_node->nex = NULL;
//2、找尾结点
while(L->nex != NULL){
L = L->nex;
}
//3、添加新结点至最后
L->nex = new_node;
}
//输出链表内容
void PrintList(LinkList L){
LinkList p = L->nex;
while(p != NULL){
cout<< p->data <<" .. ";
p = p->nex;
}
}
int main(){
//开辟一个链表头结点位置
LinkList L = (LinkList)malloc(sizeof(Lnode));
L->nex = NULL;
//插入数据
cout<<"链表结点数:";
int data_x , data_y;
cin>>data_x;
while(data_x>0){
cin>>data_y;
TaiList(L,data_y);
data_x--;
}
//打印链表内容
PrintList(L);
return 0;
}
第二个实在函数进行插入(尾插法)
#include<iostream>
using namespace std;
//声明结构体
typedef struct node{
int data;
struct node* nex;
}node,*LinkList;
//插入数据(直接调用版)
LinkList TaiList(LinkList L){ //尾插
node *new_node,*Tail = L; //Tail=尾指针
cout<<"链表结点数:";
int data_x , data_y;
cin>>data_x;
while(data_x > 0){
cin>>data_y;
new_node = (LinkList)malloc(sizeof(node)); //创建新结点
new_node->data = data_y;
new_node->nex = NULL;
Tail->nex = new_node; //插入
Tail = new_node;
data_x--;
}
return L;
}
//输出链表内容
void PrintList(LinkList L){
LinkList p = L->nex;
while(p != NULL){
cout<< p->data <<" .. ";
p = p->nex;
}
}
int main(){
//开辟一个链表头结点位置
LinkList L = (LinkList)malloc(sizeof(node));
L->nex = NULL;
//插入数据
TaiList(L);
//输出
PrintList(L);
return 0;
}