ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据与结构-单链表

2022-06-13 22:05:33  阅读:141  来源: 互联网

标签:单链 return int H1 next LinkList printf 数据 结构


#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
    ElemType date;//数据域 
    struct node *next;//指针域 
}LNode,*LinkList;

//用尾插法建立链表 
LinkList Creat_LinkList1()
{
    LinkList H,r,s;
    H=(LNode*)malloc(sizeof(LNode));//初始化链表 
    H->next=NULL;
    int x;
    r=H;
    printf("请输入数据作为结点用-1,暂停:\n"); 
scanf("%d",&x);
while(x!=-1)
    {
        s=(LNode*)malloc(sizeof(LNode));
     
        s->date=x;
        s->next=r->next;
        r->next=s;
        r=s;
            scanf("%d",&x);//-1表示结束生成子结点
    }
    r->next=NULL;
    return H;
}
//单链表的查找
LinkList Get_LinkList(LinkList H,int k)
{
LinkList p=H;
int j=0;
while(p->next!=NULL&&j<k)
    {
        p=p->next;
        j++;
    }
    if(j==k)
    return p;
    else
    return NULL;
//没找到,位置错误
 } 
 LinkList Get_LinkList1(LinkList H,int k)
{
LinkList p=H;
int j=0;
while(p->next!=NULL&&j<k)
    {
        p=p->next;
        j++;
    }
    if(j==k)
    return p->date;
    else
    return NULL;
//链表的插入
}
int Insert_LinkList(LinkList H,int i,ElemType x)//依次输入待插入的链表,插入位置,插入的元素 
{
    LinkList p,s;
    p=Get_LinkList(H,i-1);//调用按值查找位置函数*
    if(p==NULL)
    {
        printf("插入位置错误!");
        return -1;//返回-1表示输入位置错误 
     } 
     else
     {
         s=(LinkList)malloc(sizeof(LNode));
         s->date=x;
         s->next=p->next;
         p->next=s;
         return 1;//返回1表示插入成功 
     }
 } 
 //删除节点元素 
 int Del_LinkList(LinkList H,int i)
 {
     LinkList p,q;
     p=Get_LinkList(H,i-1);
     q=p->next;
     p->next=q->next;
     free(q);
     return 1;
 }
   //判断表是否为空 
  int ListEmpty(LinkList H)
  {
      if(H->next==NULL)
      return -1;
      else
      return 1;
  }
  //计算表长 
  int length_LinkList(LinkList H)
  {
      LNode *p=H;
      int j=0;
      while(p->next!=NULL)
      {
          p=p->next;
          j++;
      }
      return j;
  }
  //清空表 
  LinkList ClearList(LinkList H)
  {
      H->next=NULL;
   } 
 void output(LinkList H)
 {
     LinkList p;
     p=H->next;
     while(p!=NULL)
     {
         printf("%3d",p->date);
         p=p->next;
     }
     printf("\n");
 }
int main()
{
    LinkList H1;
    int num,i,k;
    H1=Creat_LinkList1(); //初始化并且建立链表 
output(H1);
printf("请输入待插入数据的位置:\n");
scanf("%d",&i);
printf("请输入待插入数据:\n");
scanf("%d",&k);
Insert_LinkList(H1,i,k);
output(H1);
printf("请输入待删除的位置:\n");
scanf("%d",&i);
Del_LinkList(H1,i);
output(H1);
printf("请输入待查找的位置:");
scanf("%d",&i);
num=Get_LinkList1(H1,i);
printf("该元素是:%d\n",num);
printf("请输入你想取元素的位置:\n");
scanf("%d",&i);
num=Get_LinkList1(H1,i);
printf("这个元素的值为:%d\n",num);
printf("判断表是否为空:\n");
num=ListEmpty(H1);
printf("判断结果为%d,负数为空,正数为非空\n",num);
num=length_LinkList(H1);
printf("表长为:%d\n",num);
ClearList(H1);
printf("表已经被清空!\n");
num=length_LinkList(H1);
printf("表长为:%d\n",num);
}
 

 

标签:单链,return,int,H1,next,LinkList,printf,数据,结构
来源: https://www.cnblogs.com/5ran2yl/p/16372433.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有