一、创建链表
方式1
#include <stdio.h>
#include <stdlib.h>
//结构体的定义
struct Node{
int data;
struct Node* next;
};
int main()
{
//创建链表的节点
struct Node* node1 = (struct Node*)malloc(sizeof(struct Node));
struct Node* node2 = (struct Node*)malloc(sizeof(struct Node));
struct Node* node3 = (struct Node*)malloc(sizeof(struct Node));
struct Node* node4 = (struct Node*)malloc(sizeof(struct Node));
//给节点赋值
node1->data = 1;
node2->data = 2;
node3->data = 3;
node4->data = 4;
//将节点连接起来
node1->next = node2;
node2->next = node3;
node3->next = node4;
}

方式2
#include <stdio.h>
#include <stdlib.h>
//结构体的定义
struct Node{
int data;
struct Node* next;
};
int main()
{
//三段式创建链表节点
struct Node node1;
struct Node node2;
struct Node node3;
struct Node node4;
node1.data = 1;
node2.data = 2;
node3.data = 3;
node4.data = 4;
node1.next = &node2;
node2.next = &node3;
node3.next = &node4;
}
二、尾插法创建链表
#include <stdio.h>
#include <stdlib.h>
//结构体的定义
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//创建链表
void createLinkList(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(LinkNode));
newNode->data = value;
LinkNode tempNode = head;
while(tempNode->next!=NULL){
tempNode = tempNode->next;
}
tempNode->next = newNode;
}
int main(){
LinkNode head = (LinkNode)malloc(sizeof(LinkNode));
createLinkList(head,5);
createLinkList(head,7);
createLinkList(head,4);
createLinkList(head,2);
}
三、头插法创建链表
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//头插法创建链表
void HeadInsert(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
if(head->next == NULL){
head->next = newNode;
return;
}
newNode->next = head->next;
head->next = newNode;
}
int main()
{
LinkNode head = (LinkNode)malloc(sizeof(Node));
HeadInsert(head,5);
HeadInsert(head,7);
HeadInsert(head,4);
HeadInsert(head,2);
}
四、链表的输出
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//创建链表
void createLinkList(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
LinkNode s = head;
while(s->next != NULL){
s = s->next;
}
s->next = newNode;
}
//链表的输出
void printLinkList(LinkNode head){
LinkNode temp = head;
while(temp->next != NULL){
temp = temp->next;
printf("%d\n",temp->data);
}
}
int main()
{
LinkNode head = (LinkNode)malloc(sizeof(Node));
createLinkList(head,5);
createLinkList(head,7);
createLinkList(head,4);
createLinkList(head,2);
printLinkList(head);
}
五、输出链表长度
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//头插法创建链表
void HeadInsert(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
if(head->next == NULL){
head->next = newNode;
return;
}
newNode->next = head->next;
head->next = newNode;
}
//链表的输出
void printLinkList(LinkNode head){
LinkNode temp = head;
while(temp->next != NULL){
temp = temp->next;
printf("%d\n",temp->data);
}
}
//输出链表的长度
int length(LinkNode head){
LinkNode temp = head;
int length = 0;
while(temp->next != NULL){
temp = temp->next;
length ++;
}
return length;
}
int main()
{
LinkNode head = (LinkNode)malloc(sizeof(Node));
HeadInsert(head,5);
HeadInsert(head,7);
HeadInsert(head,4);
HeadInsert(head,2);
printf("%d",length(head));
}
六、链表的删除
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//头插法创建链表
void HeadInsert(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
if(head->next == NULL){
head->next = newNode;
return;
}
newNode->next = head->next;
head->next = newNode;
}
//链表的输出
void printLinkList(LinkNode head){
LinkNode temp = head;
while(temp->next != NULL){
temp = temp->next;
printf("%d\n",temp->data);
}
}
//输出链表的长度
int length(LinkNode head){
LinkNode temp = head;
int length = 0;
while(temp->next != NULL){
temp = temp->next;
length ++;
}
return length;
}
//链表的删除
void delete(LinkNode head,int target){
LinkNode temp = head;
while(temp->next != NULL){
if(temp->next->data == target){
temp->next = temp->next->next;
}else{
temp = temp->next;
}
}
}
int main()
{
LinkNode head = (LinkNode)malloc(sizeof(Node));
HeadInsert(head,5);
HeadInsert(head,7);
HeadInsert(head,4);
HeadInsert(head,2);
delete(head,2);
printLinkList(head);
}
七、链表的插入
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node,*LinkNode;
//头插法创建链表
void HeadInsert(LinkNode head,int value){
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
if(head->next == NULL){
head->next = newNode;
return;
}
newNode->next = head->next;
head->next = newNode;
}
//链表的输出
void printLinkList(LinkNode head){
LinkNode temp = head;
while(temp->next != NULL){
temp = temp->next;
printf("%d\n",temp->data);
}
}
//输出链表的长度
int length(LinkNode head){
LinkNode temp = head;
int length = 0;
while(temp->next != NULL){
temp = temp->next;
length ++;
}
return length;
}
//链表的删除
void delete(LinkNode head,int target){
LinkNode temp = head;
while(temp->next != NULL){
if(temp->next->data == target){
temp->next = temp->next->next;
}else{
temp = temp->next;
}
}
}
//链表的插入
void insert(LinkNode head,int index,int value){
int len = length(head);
if(index<0 || index>len){
return;
}
LinkNode temp = head;
for(int i = 0;i < index;i++){
temp = temp->next;
}
LinkNode newNode = (LinkNode)malloc(sizeof(Node));
newNode->data = value;
newNode->next = temp->next;
temp->next = newNode;
}
int main()
{
LinkNode head = (LinkNode)malloc(sizeof(Node));
HeadInsert(head,5);
HeadInsert(head,7);
HeadInsert(head,4);
HeadInsert(head,2);
delete(head,2);
insert(head,2,9);
printLinkList(head);
}

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



