链表查找

来源:互联网 发布:毕业论文的数据分析 编辑:程序博客网 时间:2024/06/16 19:26

已知一单链表按值递增有序,写一算法,删除表中值大于mink并且小于maxk的所有节点,并将所删除节点释放。

#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct node{    int data;struct node *next;}Node;void Init_Node(Node *node);Node* Create_List(int listLength);void Function(Node *head,int mink,int maxk); //实现功能的函数void Print(Node *head);void main(){Node *listA;    listA=Create_List(10);printf("原来的单链表的数据元素为:");Print(listA);    Function(listA,3,8);printf("删除完毕后的单链表的数据元素为:");Print(listA);printf("程序运行完毕\n");}void Init_Node(Node *node){node->next=NULL;node->data=0;}Node* Create_List(int listLength){printf("正在申请一个长度为%d的带头结点的单链表\n",listLength);Node *head,*tail,*newNode;int data;head=(Node *)malloc(sizeof(Node));if(head==NULL) {printf("申请内存失败\n");return NULL;}    tail=head;tail->next=NULL;int i=1;    while(listLength--){    newNode=(Node *)malloc(sizeof(Node));Init_Node(newNode);printf("请输入第%d个节点的数据",i++);        scanf("%d",&data);newNode->data=data;tail->next=newNode;tail=newNode;}return head;printf("单链表创建完毕");}void Function(Node *head,int mink,int maxk){    Node *node,*node_del;node=head;printf("遍历中......\n");while(node->next!=NULL){node_del=node;node_del=node_del->next;        if(node_del->data>mink&&node_del->data<maxk)         {                                                                                                               node->next=node_del->next;free(node_del);}else node=node->next;}printf("单链表中大于%d且小于%d的数据元素删除完毕\n",mink,maxk);}void Print(Node *head){    Node *node;node=head->next;while(node!=NULL){    printf("%d  ",node->data);node=node->next;}printf("Print完毕\n");}


阅读全文
0 0