关于单链表的两种创建方式

来源:互联网 发布:战舰世界战列舰数据 编辑:程序博客网 时间:2024/05/16 10:42

第一种方式是将新创建的单链表结点加在链表头,这种方式要注意的是最先输入的值是这个链表尾的值     在 |new linkNode2 | ---- > |new linkNode 1|----->


第二种方式是将新创建的单链表结点加在链表尾



#include <stdlib.h>
#include <stdio.h>
typedef  int dataType;
typedef struct linkedNode {

    int data;

    struct linkedNode *next;

}linkedNode,*LinkedList;


void createLinkList(LinkedList link,int n){
    int i=0;
    LinkedList p;

    link->next = NULL; //link作为表头指针

    for(i=n;i>0;i--){
        p = (LinkedList)malloc(sizeof(linkedNode));//新建结点
        scanf("%d",&p->data);     //为结点赋值
        p->next=link->next;       //将新建的结点的next域指向旧的结点,这就使用新建结点成为表头
        link->next = p;          

    }

}

void createLinkListTail(LinkedList link,int n){

    LinkedList p;
    LinkedList r;
    int i=0;
    r = link;

    for(i=0;i<n;i++){
        
        p = (LinkedList)malloc(sizeof(linkedNode));////新建结点
        p->data = i;    //为结点赋值
        r->next = p;    //将指针指向新建立的一个结点,这个结点是放在单链表尾部
        r=p;            
    }
    r->next=NULL;
}




void main(){

    linkedNode *link;
    linkedNode *linkTail;
    linkedNode *p;
    int n=5;
    link=(LinkedList)malloc(sizeof(linkedNode));
    createLinkList(link,5);
    p=link;
    p=p->next;

    while(p!=NULL){
        printf("this is  %d \n " ,p->data);
        p=p->next;

    }

    linkTail=(LinkedList)malloc(sizeof(linkedNode));
    createLinkListTail(linkTail,5);

    p=linkTail;
    p=p->next;

    while(p!=NULL){
        printf("this is  %d \n " ,p->data);
        p=p->next;

    }
}

原创粉丝点击