基本数据结构——链表

来源:互联网 发布:海康威视nvr无网络视频 编辑:程序博客网 时间:2024/05/11 00:16
/* 对链表的操作:
      【   新建 添加 删除 遍历 】  这里采用的头节点只是单纯的存放着第一个节点的地址,并没有存放实际的元素。当然咯,也可以把头节点当作第一个节点,还节约了一个节点空间。
SQ 2014-04-16
*/
#include<stdio.h>
struct Node{
    int data;
    struct Node * next;
};
 typedef struct Node node;
 typedef struct Node * link;

//新建
 link creat(){
    link head;
    head = (link)malloc(sizeof(node));
    head->next =NULL;
    return head;
}
//添加元素
 void add( link head  ,int data){
    link p ,q ;
    p = head;

    q = (link)malloc(sizeof(node));
    q->data = data;
    q->next =NULL;

    while(p ->next != NULL)
        p=p->next;
    p->next=q;
    printf("添加的新元素是:%d \n" ,data);
}
//遍历元素
 void show(link head){
    int i=1;
        do{
        head = head->next;
        printf("第%d个元素的值为: %d \n" , i ,head ->data);
        i++;
        }while(head->next != NULL);
}
//删除元素
void del(link head ,int data){
    link p;
    link q=NULL;
    p= head;
    if (p->next->data == data) {  //删除第一个元素
        q =p->next;
        p->next = q->next;
        free(q);    
        }
    else  {
        while(p->next->data != data)
        p=p->next;    
        
        q=p->next;
        p->next =q->next;
        free(q);
        }
}

int main(){
    link head;
    head = creat();
    int i;
    for(i=0 ;i <10 ;i++)
        add(head,i);
    show(head);
    del(head ,6);
    show(head);
return 0;
}

0 0
原创粉丝点击