#include <stdio.h> #include <stdlib.h> /*链表,在表头插入数据,使用了一个头结点head专门记录表头位置*/ typedef struct node { int key; struct node *Next; }Node; void Insert(int num,Node *head)//插入新的节点 { Node *p = NULL; p = (Node *) malloc (sizeof(Node));//开辟新的节点 p->key = num;//赋值 p->Next=head->Next;//将原来的头结点挂在新节点后,并把新节点挂在表头上 head->Next=p; } void Print_List(Node *head) { Node *p = head->Next; while(p != NULL)//遍历打印节点值 { printf("%d->", p->key); p = p->Next; } printf("\n"); } Node *Search_List(Node *head,int num)//寻找值为num的节点,并返回位置指针 { Node *p=NULL; p=head; while((p->Next!=NULL)&&p->key!=num) p=p->Next; if(p->Next==NULL) { printf("不存在值为%d的节点,将返回头结点",num); return head; } return p; } void Delete_List(Node *head,int num)//删除值为num的节点 { Node *p=NULL; p=head; Node *pf=NULL;//记录p的前节点 while((p->Next!=NULL)&&p->key!=num) { pf=p; p=p->Next; } if(p->Next==NULL&&p->key!=num) printf("不存在值为%d的节点",num); else { pf->Next=p->Next; } } int main() { int i; Node *p=NULL; Node *head = (Node *)malloc(sizeof(Node)); head->Next = NULL;//建立空表头 for (i=0; i<10; i++) { Insert(i, head); } Print_List(head); printf("输入你要查找的值:"); scanf("%d",&i); p=Search_List(head,i); printf("已查到节点,值为:%d",p->key); printf("输入你要删除的值:"); scanf("%d",&i); Delete_List(head,i); printf("删除以后\n"); Print_List(head); system("PAUSE"); return 0; }
数据结构之简单链表(头部插入数据,查找,删除指定数据)
最新推荐文章于 2022-09-05 11:10:42 发布