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

}

 

posted @ 2012-09-22 18:15  ﹏Sakura  阅读(189)  评论(0编辑  收藏  举报