#include<iostream>
using namespace std;
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{//定义单链表结点类型
ElemType data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;
//单链表打印输出
void LinkListPrint(LinkList L){
LNode *p = L;
while(p != NULL){
printf("%d ",p -> data);//遍历输出单链表中元素值
p = p -> next;
}
printf("\n");
}
//头插法建立单链表(不带头结点)
LinkList List_HeadInsert(LinkList &L){
L = NULL;//不带头结点的单链表初始化指向NULL
LNode *s;//待插入的新结点
int x;//待插入的新结点的元素值
scanf("%d",&x);//输入新结点的值
while(x != 9999) {//当x等于9999时插入停止
s = (LNode *) malloc(sizeof(LNode));//创建新结点
s->data = x;//新结点赋值
s->next = L;
L = s;//将新结点插入表中,L始终指向新插入的结点
scanf("%d", &x);
}
}
//尾插法建立单链表(不带头结点)
LinkList List_TailInsert(LinkList &L){
L = NULL;//初始化单链表,头指针L指向NULL
LNode *s;//待插入新结点
LNode *r = L;//r为表尾指针
int x;//待插入新结点元素值
scanf("%d",&x);//输入新结点
while(x != 9999){//输入9999表示插入结束
s = (LNode *)malloc(sizeof(LNode));//创建新结点
s -> data = x;//新结点赋值
if(L == NULL){//插入第一个结点时需要特殊处理
L = s;
r = s;
}else{
r -> next = s;
r = s;//r指向新的表尾结点
}
scanf("%d",&x);
}
r -> next = NULL;//尾结点指针置空
}
int main(){
LinkList L;
// List_HeadInsert(L);
List_TailInsert(L);
LinkListPrint(L);
return 0;
}
不带头结点建立单链表(头插法、尾插法)
最新推荐文章于 2023-08-26 15:15:06 发布