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);

    }



}

 

你可能感兴趣的:(数据结构)