#include<bits/stdc++.h>
using namespace std;
struct LNode{
int data;
LNode *next;
};
//尾插法建立有头结点的单链表
LNode * ListTailInsert(LNode * &L){
int value;
LNode *p,*q;
L=(LNode *)malloc(sizeof(LNode)); //为头节点分配空间
L->next=NULL;
p=L;
cin>>value;
while(value!=999){
q=(LNode *)malloc(sizeof(LNode)); //为新节点分配空间
q->data=value;
p->next=q; //将新节点连接到尾部
q->next=NULL;
p=q; //指针p一直指向链表的最后一个节点
cin>>value;
}
return L;
}
//遍历带有头节点的链表
void ListShow(LNode *L){
LNode *T=L->next;
while(T!=NULL){
cout<<T->data<<" ";
T=T->next;
}
cout<<endl;
}
//尾插法建立没有头节点的单链表
LNode *ListTailInsert2(LNode * &L){
int value,flag=1;
LNode *p,*q;
p=L;
cin>>value;
while(value!=999){
if(flag){
L=(LNode *)malloc(sizeof(LNode));
L->data=value;
L->next=NULL;
p=L;
flag=0;
}else{
q=(LNode *)malloc(sizeof(LNode));
q->data=value;
p->next=q;
q->next=NULL;
p=q;
}
cin>>value;
}
return L;
}
//遍历没有头节点的单链表
void ListShow2(LNode * L){
LNode *T=L;
while(T!=NULL){
cout<<T->data<<" ";
T=T->next;
}
cout<<endl;
}
int main(){
LNode *L,*Q;
ListTailInsert(L); //带有头节点的尾插法
ListShow(L); //遍历带有头节点的链表
ListTailInsert2(Q); //没有头节点的尾插法
ListShow2(Q); //遍历没有有头节点的链表
return 0;
}
尾插法建立单链表
最新推荐文章于 2023-11-03 19:35:58 发布