1)线性表:
1.有限的序列 2.序列中的每一个元素都有唯一的前驱和后继,除了开头和结尾两个节点。
2)顺序表:
分配一些连续的内存去存放这些元素,例如编程语言中的数组
3)链表:
内存时不连续的,元素会各自被分配一块元素,内存和内存之间用指针进行相连(指针域next和数据域data)
4)单链表操作:
1.增加
1.头插法
2.尾插法
2.删除:只要找到对应的节点,将对应的节点的前一个节点指向这个节点的后继,只操作一个指针
3.头节点:保存链表元素的个数
代码部分:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data; //数据域
struct Node* next; //指针域
}Node; //定义结构体变量
Node* initList(){
Node* list =(Node*)malloc(sizeof(Node));
list->data=0;
list->next=NULL;
return list;
} //创捷链表
void headInsert(Node* list,int data){
Node* node=(Node*)malloc(sizeof(Node));
node->data=data;
node->next=list->next;
list->next=node;
list->data++;
} //头插法
void tailInsert(Node* list,int data){
Node* head=list;
Node* node=(Node*)malloc(sizeof(Node));
node->data=data;
node->next=NULL;
list=list->next;
while(list->next){
list=list->next;
}
list->next=node;
head->data++;
} //尾插法
void deleteNode(Node* list,int data){
Node* pre=list;
Node* current=list->next;
while(current){
if(current->data==data){
pre->next=current->next;
free(current);
break;
}
pre=current;
current=current->next;
}
list->data--;
}
void printList(Node* list){
list=list->next;
while(list){
printf("%d",list->data);
list=list->next;
}
printf("\n");
}
int main()
{
Node* list=initList();
headInsert(list,1);
headInsert(list,2);
headInsert(list,3);
headInsert(list,4);
headInsert(list,5);
tailInsert(list,6);
tailInsert(list,7);
tailInsert(list,8);
tailInsert(list,9);
tailInsert(list,10);
printList(list);
deleteNode(list,5);
deleteNode(list,10);
deleteNode(list,6);
printList(list);
system("pause");
return 0;
}