9.6+9.7

#include
#include
//创建一个链表
typedef struct node{	
	int num;
	struct node *next;
}node;
//创建一个头节点
node *create(int n)
{
	node* head,*p,*q;
	head = (node*)malloc(sizeof(node));
	head->num=0;
	head->next= NULL;
	p=head;	
//创建数据为1~n的节点
	for(int i=0;i<n;i++){
		q= (node*)malloc(sizeof(node));
		q->num=i;
		p->next=q;
		p=q;
	
}
	p->next=NULL;
	return head;
}
//插入节点
void insert(node* p,int n){	
	//创建节点
	node *charu =(node*)malloc(sizeof(node));
	charu->num=n;
	
	//链接
	charu->next=p->next;
	p->next=charu;	
}
//打印链表的数据
void printNode(node* head)
{
	node *p=head->next;
	while (p!= NULL){
		printf("node: %d\n",p->num);
		p=p->next;
	}
}
//删除指定数据
void del(node* head,int val ){
	node* prev =head;//记录一个前驱
	node *p=head->next;//从第一个位置开始遍历
	while(p!=NULL){
		if(p->num==val){
			prev->next=p->next;
				free(p);
				break;
		}
		else{
			prev=p;
			p=p->next;	
		}
	}	
}

int main(){
	int n;
	node* head=create(10);
	printf("当前链表的所有节点:\n");
	printNode(head);
	printf("请输入需要插入的结点编号:\n");
	scanf("%d",&n);
	insert(head,n);
	printf("插入之后的链表的节点:\n");
	printNode(head);
	printf("请输入需要删除的结点编号:\n");
	scanf("%d",&n);
	del(head,n);
	//删除之后的链表的节点
	printf("删除之后的链表的节点:\n");
	printNode(head);
	return 0;	
}

9.6+9.7_第1张图片

你可能感兴趣的:(C语言学习,算法,开发语言,笔记,c语言,学习)