数据结构与算法---单链表(C语言版本)

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值