数据结构之链表

本文详细介绍了链表的基本操作,包括创建、插入、删除、逆序和合并等,并提供了具体的C语言实现代码。适合初学者理解和掌握链表这一重要的数据结构。

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
typedef struct lnode
{
 int data;
 struct lnode *next;
}LNODE,*Linklist;

//创建链表,插入,删除,逆序(通过插入完成),合并。
LNODE *linklist_creat(LNODE *l,int n)
{
 LNODE *head=(LNODE *)malloc(sizeof(LNODE *));
 head->next=NULL;
 LNODE *p,*q;
 int i=1;
 while(i<=n)
 {
  p=(LNODE *)malloc(sizeof(LNODE *));
  printf("please enter the %d data/n",i);
  scanf("%d",&p->data);
  p->next=NULL;
  if(head->next==NULL) head->next=p;//注意开始节点的问题。
  else
   q->next=p;
  q=p;
  i++;
 }
 
return (head);
}

LNODE *linklist_reverse_creat(LNODE *l,int n)//逆序输入N个值到链表。
{
 LNODE *head=(LNODE *)malloc(sizeof(LNODE *));
 head->next=NULL;
 LNODE *p,*q;
 int i=1;
 while(i<=n)
 {
  p=(LNODE *)malloc(sizeof(LNODE *));
  p->next=NULL;
  printf("please enter the %d num /n",i);
  scanf("%d",&p->data);
  p->next=head->next;//插入法进行逆序 关键句。
  head->next=p;
  i++;


 }

 return(head);
}

LNODE *linklist_insert(LNODE *l,int i,int e)//在I元素后插入
{
 LNODE *p,*q;
 p=l;
 int j=0;
 while(j==i)
 {
  
  p=p->next;
  j++;
 }
 q=(LNODE *)malloc(sizeof(LNODE *));
 q->data=e;
 q->next=p->next;
 p->next=q;

 return(l);

}

LNODE *linklist_del(LNODE *l,int i,int &e)
{
 return l;
}

void linklist_travel(LNODE *l)
{
 LNODE *p;
 p=l->next;
 int i=1;
 while(p)
 {
  
  printf("the %d num is %d /n",i,p->data);
  p=p->next;
  i++;

 }
}


LNODE *linklist_reverse(LNODE *l)
{
 LNODE *head,*p,*q;
 p=l->next;
 head=(LNODE *)malloc(sizeof(LNODE *));
 head->next=NULL;
 while(p!=NULL)
 {
  l->next=p->next;
  
  p->next=head->next;//插入关键句
  head->next=p;
  
  p=l->next;


 }


 return(head);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值