码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构中线性表的有关操作

时间:2016-12-02 02:32:15      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:size   ++   null   line   let   scan   struct   ber   tle   

#include<stdio.h>
#include<stdlib.h>
//此链表中的数据均为int型
typedef struct Link_list{
  int date;
  struct Link_list *next;
}Link;

int main()
{
  Link *Link_creat();
  void Link_print(Link *head);
  void ClearList(Link *head);
  bool ListEmpty(Link *head);
  int ListLength(Link *head);
  int GetElem(Link *head,int n);
  bool ListDelete(Link *head,int locate);
  bool ListInsert(Link *head,int number,int locate);
  Link *Line;
  Line=Link_creat();
  //if(ListDelete(Line,2))Link_print(Line);
  //printf("%d ",GetElem(Line,6));
  return 0;
}

Link *Link_creat()
{
  Link *head=NULL;
  Link *tail=head;
  int number;
  do{
    scanf("%d",&number);
    if(number==-1){
     break;
  }
  Link *p=(Link *)malloc(sizeof(Link));
  p->date=number;
  p->next=NULL;
  if(!tail){
    head=p;
    tail=head;
  }
  else {
      while(tail->next)
      {
        tail=tail->next;
      }
    tail->next=p;
    }
  }while(number!=-1);
  return head;
}

void Link_print(Link *head)
{
  Link *p=head;
  while(p)
  {
    printf("%d ",p->date);
    p=p->next;
  }
}

void ClearList(Link *head)
{
  Link *p=head;
  Link *pt=head->next;
  while(pt)
  {
    free(p);
    p=pt;
    pt=pt->next;
  }
  free(p);
}

bool ListEmpty(Link *head)
{
  Link *p=head;
  if(!p)return false;
  else return true;
}

int ListLength(Link *head)
{
  Link *p=head;
  int ans=0;
  while(p)
  {
    ans++;
    p=p->next;
  }
  return ans;
}
int GetElem(Link *head,int n)
{
  Link *p=head;
  if(n>ListLength(p))return -1;
  for(int i=1;i<n;i++)
  {
    p=p->next;
  }
  return p->date;
}

bool ListInsert(Link *head,int number,int locate)
{
  if(locate>ListLength(head))return false;
  Link *p=head;
  Link *temp=(Link *)malloc(sizeof(Link));
  temp->date=number;
  for(int i=1;i<locate-1;i++)
  {
    p=p->next;
  }
  temp->next=p->next;
  p->next=temp;
  return true;
}

bool ListDelete(Link *head,int locate)
{
  if(locate>ListLength(head))return false;
  Link *p=head;
  for(int i=1;i<locate-1;i++)
  {
    p=p->next;
  }
  p->next=(p->next)->next;
  return true;
}

数据结构中线性表的有关操作

标签:size   ++   null   line   let   scan   struct   ber   tle   

原文地址:http://www.cnblogs.com/MushCoom/p/6124185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!