今天有点忙,拙劣地写了个链表 头插入法,尾插入法。

本文介绍了链表的两种创建方法:头插入法和尾插入法,并提供了详细的代码实现步骤。通过实例演示如何使用这两种方法来创建链表,旨在帮助初学者理解链表的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//链表

//这个有问题。
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
  datatype data;
  struct node *next;
}linklist;

//头插入法
linklist *createList()
{
  char ch;
  linklist *head,*p;
  head=NULL;
  ch=getchar();
  while(ch!='#')
    {
      p=(linklist *)malloc(sizeof(linklist));
      p->data=ch;
      p->next=head;
      head=p;
      ch=getchar();
    }
  return head;
}
//尾插入法
linklist *createListTail()
{
  char ch;
  linklist *p,*head,*e;
  ch=getchar();
  while(ch!='#')
    {
      p=(linklist *)malloc(sizeof(linklist));
      p->data=ch;
      if(head==NULL) head=p;
      else e->next=p;
      e=p;
      ch=getchar();
    }
  if(e!=NULL) e->next=NULL;
  return head;
}
void display(linklist *L)
{
  linklist *p;
  p=L;
  while(p->next)
    {
    printf("%c ",p->data);
    p=p->next;
    }
}

int main()
{
    linklist *L1,*L2;
    //  L1=(linklist *)malloc(sizeof(linklist));
    //    L2=(linklist *)malloc(sizeof(linklist));

   //  display(L2);
     L1=createList();
     //   L2=createListTail();  
       display(L1);

  //  display(&L2);
  return 0;
}

/*
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
  char data;
  struct node *next;
}linklist;

linklist *creatList1()
{
  char ch;
  linklist *head,*p,*q;
  int i=1;
  head=NULL;
  printf("/n请输入一个链表最后一个字符");
  scanf("/n%c",&ch);
  while(ch!='#')
    {
      p=(linklist *)malloc(sizeof(linklist));
      p->data=ch;
      p->next=head;
      head=p;
      printf("/n已建%d个字符的链表",i);
      q=head;
      while(q!=NULL)
    {
      printf("%c->",q->data);
      q=q->next;
    }
      printf("NULL");
      i++;
      printf("/n请输入第%d个字符",i);
      scanf("%c",&ch);
    }
  return (head);
}

linklist *creatList()
{
  char ch;
  linklist *head,*q,*p,*e;
  int i=1;
  printf("/n请输单字符链表的第一个字符");
  head=NULL;
  e=NULL;
  scanf("%c",&ch);
  while(ch!='#')
    {
      p=(linklist *)malloc(sizeof(linklist));
      p->data=ch;
      if(head==NULL) head=p;
      else e->next=p;
      e=p;
      p->next=NULL;
      printf("/n已建立%d个字符的链表",i);
      q=head;
      while(q!=NULL)
    {
      printf("%c->",q->data);
      q=q->next;
    }
      printf("NULL");
      i++;
      printf("/n请输入单字符链表的第%d个字符",i);
      scanf("%c",&ch);
    }
  return (head);
}

int main()
{
  linklist *p;
  int ch;
  while(1)
    {
      printf("/n请选择:");
      printf("/n(1)头插入法");
      printf("/n(2)n尾插入法");
      printf("/n(3)结束");
      scanf("/n%d",&ch);
      switch(ch)
    {
    case 1:p=creatList();break;
    case 2:p=creatList();break;
    case 3:return 0 ;
    }
    }
  return 0;
}
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值