结点定义:struct node
创建无序链表:Create()
遍历链表:Print() Search()
删除结点:Delete_one_node()
释放链表:Delete_chain()
插入一个结点:Insert()
创建有序链表:Create_sort()
#include <iostream>
#include<iomanip>
using namespace std;
/*不带头节点*/
//定义链表结点结构
struct node{
int data;
node *next;
};
//动态创建无序链表,函数返回值为链表的首指针;程序运行时,依次输入链表中各结点的数据,以输入'-1'表示结束。
node * Create(){
node *p1, *p2 = NULL, *head;//p1指向新开辟的结点,p2指向建立过程中的链表尾结点,head指向链表首结点
int a;
head = NULL;//初始时,设置head为空指针
cout << "正在创建一条无序链表...\n";
cout << "请输入一个正整数,以-1结束:";
cin >> a;//输入第一个数据
while(a != -1){
p1 = new node;//动态申请一个新结点 <指针变量> = new <数据类型> 程序结束前必须通过delete释放
p1->data = a;//给新结点数据域赋值
if(head == NULL)//只有第一次加入结点时本条件成立
head = p2 = p1;//加入首结点
else{
p2->next = p1;//连入中间结点
p2 = p1;
}
cout << "请输入一个正整数,以-1结束:";
cin >> a;//输入下一个数据
}
if(head != NULL){
//如建立的不是空链表,则需要进行尾结点处理
p2->next = NULL;
}
return head;//返回链表首指针
}<