可进行查找删除插入的链表

来源:互联网 发布:淘宝商城加盟代理 编辑:程序博客网 时间:2024/05/01 14:04
#include<stdio.h>#include<stdlib.h>  //  malloc() 函数的头文件struct node  *p = NULL, *p1 = NULL, *head = NULL ;struct node{int a;            //   所建链表结点结构struct node *next;}; void scan()   //  输入数据{   int  b;printf("请输入数据,输入0表示结束输入!\n");while (1){scanf("%d", &b);if (b == 0)   // 控制结束的条件{break;}p = (struct node *)malloc(sizeof (struct node));  // p为结构体指针 指向一个新生成的结构体p->a = b;p->next = NULL;if (head == NULL) head = p;else p1->next = p;p1 = p;}}void find()    //  查找数据{int a,b,i;b = 1;struct node *q = NULL;q = head;printf("\n");printf("请输入要找的元素位置\n");scanf("%d",&a);printf("\n");for (i = 1; i <= a;i++){if (q->a != NULL&&i == a){printf("查找的数据为:");printf("%d\n\n", q->a);b = 0;break;}q = q->next;if (q == NULL) break;}if (b)  printf("没有找到你所要位置的数据!\n\n");} void Delete()     //删除数据 { int a,b,i; b = 1; struct node *q = NULL ,*q1=NULL; q = head; printf("\n"); printf("请输入你要删除的元素位置\n"); scanf("%d", &a); printf("\n"); for (i = 1; i <= a; i++) { if (a == 1)   { q1 = q; head=q->next; free(q1); b = 0; printf("删除成功!\n\n"); break; } if (q->next!= NULL&&i == a-1) { q1 = q->next; q ->next=q1->next; free(q1); b = 0; printf("删除成功!\n\n"); break; }  q = q->next; if (q==NULL) break;   } if (b)  printf("没有找到你所要删除的数据位置!\n\n"); } void insert() //   插入数据 { int a, b,c ,i; b = 1; struct node *q = NULL, *q1 = NULL; q = head; printf("\n"); printf("请输入你要插入的元素位置\n"); scanf("%d", &a); printf("\n"); for (i = 1; i <= a; i++) { if (a == 1) { q1 = (struct node *)malloc(sizeof (struct node));  // q1为结构体指针 指向一个新生成的结构体 printf("请输入要插入的数据!\n"); scanf("%d", &c);  printf("\n"); q1->a = c; q1->next = q;  head = q1; b = 0; printf("插入成功!\n\n"); break; } if (q->a != NULL&&i == a - 1) { q1 = (struct node *)malloc(sizeof (struct node));  // q1为结构体指针 指向一个新生成的结构体 printf("请输入要插入的数据!\n"); scanf("%d", &c); printf("\n"); q1->a = c; q1->next = q->next; q->next = q1;  b = 0; printf("插入成功!\n\n"); break; } q = q->next; if (q == NULL) break; } if (b)  printf("无法插入你所要插入的位置!\n\n");  }void print()  //  输出处理后所有数据{printf("\n");printf("输出处理后的所有数据\n");while (head != NULL){printf("%d\n", head->a);head = head->next;}}int main(){scan();      //  输入数据find();      //  查找数据Delete();    // 删除数据insert();    //  插入数据print();     //  输出所处理后的所有数据return 0;}


 

0 0
原创粉丝点击