C/C++ 创建链表

来源:互联网 发布:js定义数组参数的函数 编辑:程序博客网 时间:2024/05/21 09:10

        面试中经常碰到要创建链表的题目,今天做个小总结:

1.创建链表(头插法)

  该程序完成了建立个各节点的链表,并将链表数据初始化为整数的程序,且该链表为无头结点的链表,代码如下:

#include <math.h>typedef int datatype;                                                           //假设建立的链表数据整型数据typedef struct node                                                             //定义节点{ datatype data;  struct node * next;}linklist;linklist * creat(linklist * head,int n){ linklist * p; int i; srand(time(0));                                                                  //初始化随机数种子 head=NULL; for(i=0;i<n;i++) { p=(linklist *)malloc(sizeof(linklist));                                   //生成一个新节点,并返回节点指针  p->data=rand()%100;                                                       //给节点数据赋初值  p->next=head;  head=p;                           } return head;}


2.创建链表(尾插法)

//VC++运行正常,输入字符型数据来创建节点,以‘#’来结束创建。#include <stdio.h>#include <math.h>typedef char datatype;                                             //假设建立的链表数据整型数据typedef struct node                                                  //定义节点{    datatype data;     struct node * next;}linklist;linklist * creatlist(linklist * head);                               //声明创建链表的函数 main(){        linklist * q;         linklist * head;         printf("请输入字符来创建链表,以'#'来结束:\n");         q=creatlist(head);         while(q->next!=NULL)         { printf("\n %c",q->data);         q=q->next;         printf("\n"); }}linklist * creatlist(linklist * head){    char ch;     linklist * p;     linklist * e;                                                       //定义指向尾部的指针     head=NULL;     e=NULL;     ch=getchar();     while('#'!=ch)      {   p=(linklist *)malloc(sizeof(linklist));               //生成新节点并返回节点指针          p->data=ch;                                                 //给节点数据赋初值          if(NULL==head)               head=p;         else              e->next=p;         e=p;         ch=getchar();      }      if(NULL!=e)            e->next=NULL;      return head;}



原创粉丝点击