//插入元素//三个参数分别是链表,位置,参数
list *insert_list(list *head,int pos,int data){
list *node=initlist();//新建结点
list *p=head;//p表示新的链表
list *t;
t=p;
node->data=data;if(head!=NULL){for(int i=1;i<pos;i++){
t=t->next;//走到需要插入的位置处}
node->next=t->next;
t->next=node;return p;}return p;}
//遍历元素intdisplay(list *head){if(head !=NULL){
list *p = head;//遍历头节点到,最后一个数据while(p->next != head ){printf("%d ",p->next->data);
p = p->next;}printf("\n");//习惯性换行//把最后一个节点赋新的节点过去return1;}else{printf("头结点为空!\n");return0;}}
【 6. 实例 - 循环链表的 增删查改 】
#include<stdio.h>#include<stdlib.h>typedefstructlist{int data;structlist*next;}list;//data为存储的数据,next指针为指向下一个结点//初始结点
list *initlist(){
list *head=(list*)malloc(sizeof(list));if(head==NULL){printf("创建失败,退出程序");exit(0);}else{
head->next=NULL;return head;}}//创建--插入数据intcreate_list(list *head){int data;//插入的数据类型printf("请输入要插入的元素:");scanf("%d",&data);
list *node=initlist();
node->data=data;//初始化一个新的结点,准备进行链接if(head!=NULL){
list *p=head;//找到最后一个数据while(p->next!=head){
p=p->next;}
p->next=node;
node->next=head;return1;}else{printf("头结点已无元素\n");return0;}}//插入元素
list *insert_list(list *head,int pos,int data){//三个参数分别是链表,位置,参数
list *node=initlist();//新建结点
list *p=head;//p表示新的链表
list *t;
t=p;
node->data=data;if(head!=NULL){for(int i=1;i<=pos;i++){
t=t->next;}
node->next=t->next;
t->next=node;return p;}return p;}//删除元素intdelete_list(list *head){if(head ==NULL){printf("链表为空!\n");return0;}//建立零时结点存储头结点信息(目的为了找到退出点)//如果不这么建立的化需要使用一个数据进行计数标记,计数达到链表长度时自动退出//循环链表当找到最后一个元素的时候会自动指向头元素,这是我们不想让他发生的
list *temp = head;
list *ptr = head->next;int del;printf("请输入你要删除的元素:");scanf("%d",&del);while(ptr != head){if(ptr->data == del){if(ptr->next == head){//循环结束的条件换成ptr->next == head
temp->next = head;free(ptr);return1;}
temp->next = ptr->next;free(ptr);//printf("元素删除成功!\n");return1;}
temp = temp->next;
ptr = ptr->next;}printf("没有找到要删除的元素\n");return0;}//遍历元素intdisplay(list *head){if(head !=NULL){
list *p = head;//遍历头节点到,最后一个数据while(p->next != head ){printf("%d ",p->next->data);
p = p->next;}printf("\n");//习惯性换行 ( o=^•ェ•)o ┏━┓//把最后一个节点赋新的节点过去return1;}else{printf("头结点为空!\n");return0;}}intmain(){//初始化头结点//
list *head=initlist();
head->next=head;通过插入元素完善链表/for(int i=0;i<5;i++){//只是演示使用,不具体提供输入create_list(head);}display(head);插入元素
head=insert_list(head,1,10);display(head);删除元素delete_list(head);display(head);return0;}
在这个数字化的时代,我们都热爱用照片记录生活中的美好瞬间。然而,有时候我们会发现,由于各种原因,照片的像素可能无法满足我们的需求。这时候,Topaz Gigapixel AI for Mac/Win 这款强大的照片放大工具应运而生。
Top…