線性表的鏈表實驗

(1)、單鏈表的建立。先建立頭結點head,將頭結點的指針域置爲空;然後新建一個結點p, 把此新結點鏈接到單鏈表的尾端或始端。

(2)、單鏈表的插入。新建一個結點p,指定插入位置;從單鏈表頭開始查找結點位置。

(3)、單鏈表的刪除。指定刪除位置;從單鏈表頭開始查找結點位置。

這是學數據結構的第一個實驗,很簡單,不過當初也是花了一點心血了,呵呵

#include <stdio.h>

#include <conio.h>

typedef struct node{
    int data;
    struct node *next;
}LNode,*LinkList;

LinkList CreatLinkList(void)
{
    LinkList H,p,q;
    int n,i;
    H=(LinkList)malloc(sizeof(LNode));
    if(H)
    H->next=NULL;
    p=H;
    printf("please input the number of linklist:  ");
    scanf("%d",&n);
    printf("/n");
    printf("please input the data:/n");
    for(i=0;i<n;i++)
    {
      q=(LinkList)malloc(sizeof(LNode));
      scanf("%d",&q->data) ;
      q->next=p->next;
      p->next=q;
      p=q;
    }
    return H;
}                          //尾插法建立鏈表

void printflist(LinkList H)
{
     LinkList p;
     p=H->next;
     while(p!=NULL)
     {
       printf("%d ",p->data);
       p=p->next;
     }
     printf("/n");
}                                         //輸出函數


LinkList LocateLinkList(LinkList H,int i)
{
     LinkList p;
     int j;
     p=H;
     j=0;
     while(p&&j<i)
     {
       p=p->next;
       j++;
     }
     if(j!=i||!p)
     {
       printf("the i is error or linklist is not exsist");
       return(NULL);
     }
return(p);
}                                        //查找

void InsertLinkList(LinkList H,int i,int x)
{
    LinkList p,q;
    p=LocateLinkList(H,i-1);
    if(!p)
    {
      printf("i is error");
      return(0);
    }
    q=(LinkList)malloc(sizeof(LNode));
    if(!q)
    {
      printf("apply space not success");
      return(0);
    }
    q->data=x;
    q->next=p->next;
    p->next=q;
    printflist(H);
}                                        //  插入

     
void DelLinkList(LinkList H,int i)
{
    LinkList p,q;
    if(!H->next)
    {
      printf("the list can not be deleted");
      return(0);
    }
    p=LocateLinkList(H,i-1);
    if(!p)
    {
      printf("i is error");
      return(0);
    }
    q=p->next;
    p->next=q->next;
    free(q);
    printflist(H);
}                                   //刪除
  
main()
{
    LinkList head;   
    int x,i;           
    head=CreatLinkList();
    printf("the primate list is:/n");
    printflist(head);

    printf("please input the insert position/n");
    scanf("%d",&i);
    printf("please input the insert data/n");
    scanf("%d",&x);
    printf("the list after inserting a num is:/n");
    InsertLinkList(head,i,x);

    printf("please input the delete position/n");
    scanf("%d",&i);
    printf("the list after deleting a num is:/n");
    DelLinkList(head,i);

    getch();

}

 

發佈了28 篇原創文章 · 獲贊 11 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章