1.线性结构是一个有序数据元素的集合。
常用的线性结构有:线性表,栈,队列,双队列,串。
2.定义:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
3.详细代码如下:
/*头插法(含头结点)建立*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#define MaxSize 100
using namespace std;
typedef struct node{
int elem; //数据域
struct node *next; //指针域
}node;
node * initlinklist(node *head);
bool insertlinklist(node *head,int data);
bool Createlinklist(node *head);
int find_data(node *head,int get_elem);
bool deletelinklist(node *head,int data);
//初始化
node * initlinklist(node *head){
head=new node; //分配内存
head->elem=0;
head->next=NULL; //不为野指针
return head;
}
/* 创建
特征:头结点(指针)永远指向新结点
逻辑上的结点顺序与物理上的结点顺序并不相同
pnode->next=head->next;
head->next=pnode;
注:头结点(指针)的数据域依旧会存在值,初始化为零避免它成为一个野值
*/
bool Createlinklist(node *head){
if(!head) return false;
/*建立含数据的新结点*/
/*头结点指向新结点*/
int data=0;
for(int i=1;i<=50;i++){
if(i%2==0){
data=i;
node *pnode=new node;
pnode->elem=data;
pnode->next=head->next;
head->next=pnode;
}
}
return true;
}
//插入
bool insertlinklist(node *head,int data){
if(!head) return false;
node *new_node=new node;
if(data!=0){
new_node->elem=data;
new_node->next=head->next;
head->next=new_node;
}
return true;
}
//删除
bool deletelinklist(node *head,int data){
if(!head) return false;
while(NULL!=head->next){ //要查找该结点的前一个结点
if(head->next->elem==data) break;
head=head->next;
}
node *out_node=head->next;
head->next=head->next->next;
free(out_node);
out_node=NULL;
return true;
};
//查找
int find_data(node *head,int get_elem){
int searchtime=0;
node *pointer=head;
while(pointer->next!=NULL){
searchtime++;
if(pointer->next->elem==get_elem){
return searchtime;
break;
}else{
pointer=pointer->next;
}
}
return 0;
}
来源:CSDN
作者:不才丿
链接:https://blog.csdn.net/Y1220282679/article/details/104038236