C 数据结构 --- 线性表(链式表)
#include <stdio.h> #include <stdlib.h> #define MAXLENGTH 1000 struct linkNode{ int date; struct linkNode *link; }; typedef struct linkNode linkNode; linkNode* createLinkNode(){ int i ; linkNode *node ,*p,*_temp; node = (linkNode*)malloc(sizeof(linkNode)); if(!node){ printf("分配内存失败"); exit(1); } puts("请输入一个值"); scanf("%d",&node->date); node->link = NULL; _temp = node; for(i =1; i<3 ;i++){ p = (linkNode*)malloc(sizeof(linkNode)); if(!p){ puts("分配内存失败"); exit(1); } puts("请输入一个值"); scanf("%d",&p->date); p->link =NULL; _temp->link = p; _temp = _temp->link; } return node; } linkNode* findNode(linkNode *head, int num){ linkNode *p = head; while(p){ if(p->date == num)return p; p = p->link; } return p; } void showNode(linkNode* p){ while(p!=NULL){ printf("%d\t",p->date); p = p->link; } } void insertNode(linkNode *p,int val){ linkNode *newNode = (linkNode*)malloc(sizeof(linkNode)); newNode->date = val; newNode->link = NULL; if(p->link == NULL) p->link = newNode; else{ newNode->link = p->link; p->link = newNode; } return ; } void deleteNode(linkNode *head,linkNode *p){ linkNode *_temp; if(p->link !=NULL){ _temp = head; while(_temp->link !=NULL){ if(_temp->link == p){ _temp->link = p->link; break; } _temp = _temp->link; } } free(p); return; } void freeNode(linkNode *head){ linkNode *ptr; while(head !=NULL){ ptr = head; head = head->link; free(ptr); } } void main(){ int sear,sear1; linkNode *newHead,*ptr ; newHead = createLinkNode(); showNode(newHead); printf("输入要找的值"); scanf("%d",&sear); ptr = findNode(newHead,sear); if(!ptr){ printf("没有找到要找的值"); }else{ puts("请输入要插入的数据"); scanf("%d",&sear); insertNode(ptr,sear); showNode(newHead); } puts("请输入要查找并删除的数据"); scanf("%d",&sear1); ptr = findNode(newHead,sear1); if(!ptr){ puts("没找到该值"); }else{ deleteNode(newHead, ptr); showNode(newHead); } }
生命只有一次。