无头结点的单链表的一系列操作
没有头结点的链表,C++实现其初始化,建立,插入,删除,查询,计算长度,输出。感觉没有头结点好多操作都变得复杂了那么一丢丢。
目录
初始化
typedef int datatype;
struct nodes{
datatype data;
nodes *next;
};
struct Lists{
nodes *head;
};
//初始化
Lists init(){
Lists List;
List.head=NULL;
return List;
}
建立
尾插法
//无头结点的尾插法
void CreatListI(Lists *List){
datatype num;
cout<<"输入数据元素,当数据元素为-1时结束"<<endl;
while(cin>>num&&num!=-1){
nodes *temp=(nodes*)malloc(sizeof(nodes));
temp->data=num;
temp->next=NULL;
nodes *tail;
if(List->head==NULL){
List->head=temp;
tail=List->head;
}
else {
tail->next=temp;
tail=temp;
}
}
}
尾插法实现链表的建立,尾插法主要是通过一个指向链表最后一个结点的指针tail,每次插入都插在tail->next,并更新tail,注意插入第一个结点时需要特殊操作一波。
头插法
//无头结点的头插法
void CreatListII(Lists *List){
datatype num;
cout<<"输入数据元素,当数据元素为-1时结束输入"<<endl;
while(cin>>num&&num!=-1){
nodes *node=(nodes*)malloc(sizeof(nodes));
node->data=num;
node->next=List->head;
List->head=node;
}
}
头插法实现链表的建立。头插法是把需要插入的结点插到链表的第一个位置,插入完成后链表的顺序和插入的顺序是相反的。头插法和尾插法,感jio就是“茴”的多种写法。。。

本文详细介绍了无头结点单链表的各种操作,包括初始化、建立、查找、插入、删除、计算长度及打印。通过C++代码实现,深入解析了尾插法、头插法、前插法、后插法以及按序号和按值的查找、删除等关键算法。

1374

被折叠的 条评论
为什么被折叠?



