【无标题】输入3 4 5 6 7 9999一串整数,9999代表结束,通过头插法新建链表,并输出,通过尾插法新建链表并输出。

#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
  ElemType data;
  struct LNode *next;
}Lnode,*LinkList;
LinkList create_HeadL(LinkList &L)
{
  L=(LinkList)malloc(sizeof(Lnode));
  L->next=NULL;
  LinkList p;
  int data1;
  scanf("%d",&data1);
  while(data1!=9999)
  {
    p=(LinkList)malloc(sizeof(Lnode));
    p->data=data1;
    p->next=L->next;
    L->next=p;
    scanf("%d",&data1);
  }
  return L;
}
 LinkList create_EndL(LinkList &L)
 {
   L=(LinkList)malloc(sizeof(Lnode));
   L->next=NULL;
   LinkList p,r=L;
   int data1;
   scanf("%d",&data1);
   while(data1!=9999)
   {
      p=(LinkList)malloc(sizeof(Lnode));
      p->data=data1;
      r->next=p;
      r=p;
      scanf("%d",&data1);
   }
     r->next=NULL;
   return L;
 }
void Print(LinkList L)
{
L=L->next;
while(L!=NULL)
{
printf("%d",L->data);//打印当前结点数据
L=L->next;//指向下一个结点
if(L!=NULL)
 {
  printf(" ");
  }
}
printf("\n");
}


int main()
{
  LinkList L;
  create_HeadL(L);
  Print(L);
  create_EndL(L);
   Print(L);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于头插法创建链表的问题。我来解答一下。 首先,头插法是指在链表头部插入新节点,新节点成为链表的新头部。这种方法可以方便地实现链表的逆序,并且时间复杂度为 O(n)。 下面是使用头插法创建链表并逆序的代码: ``` #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createList() { Node* head = NULL; Node* p = NULL; int n, i, x; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &x); p = (Node*)malloc(sizeof(Node)); p->data = x; p->next = head; head = p; } return head; } void printList(Node* head) { Node* p = head; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } void reverseList(Node** head) { Node* prev = NULL; Node* curr = *head; Node* next = NULL; while (curr != NULL) { next = curr->next; curr->next = prev; prev = curr; curr = next; } *head = prev; } int main() { Node* head = createList(); printList(head); reverseList(&head); printList(head); return 0; } ``` 在 createList 函数中,先读入链表的长度 n,然后依次读入每个节点的值 x,创建新节点并将其插入到链表头部,最后返回链表的头指针。 在 reverseList 函数中,使用三个指针 prev、curr 和 next 分别表示当前节点的前一个节点、当前节点和当前节点的后一个节点,依次将当前节点的 next 指针指向前一个节点,然后将 prev、curr 和 next 分别向后移动一位,直到 curr 指向链表的最后一个节点为止。最后将 head 指针指向 prev,完成链表的逆序。 最后在主函数中,先打印原始链表,然后调用 reverseList 函数逆序链表,最后再打印逆序后的链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值