程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 數據結構中線性表的有關操作,數據結構線性

數據結構中線性表的有關操作,數據結構線性

編輯:關於C語言

數據結構中線性表的有關操作,數據結構線性


#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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved