單鏈表的建立、插入、刪除實驗代碼

學計算機的同鞋們都知道,我們偉大的數據結構中有個東西叫單鏈表,這東西跟單戀似的,苦中帶甜,甜中微苦。
下面我們就拉一拉單鏈表的建立、插入和刪除。咱們不整那些虛的,我也是剛開始寫,如有錯誤,希望各位大佬斧正指出。
本片使用尾插法進行操作

  • 建立
    在一切開始之前,我們先來個初始化,把未知的東西聲明一下,我們所學的C#、Java均是如此,原理不一,此處只是類比推理,方便理解。
    初始化:申請頭節點
    頭節點
first=malloc(size);//malloc(size)函數申請節點空間
rear=first;

再依次插入元素節點
先申請空間
再存數據
再將rear向後移
只要是持續增加元素節點,這四步是不用變的
增加元素結點

s=malloc(size);
s->data=x;//x是所需存入的數據
rear->next=s;
rear->=s;

循環結束將最後一個指針域指向NULL

rear->next=NULL;
  • 插入
    轉換一下指針指向
    插入結點申請節點空間s,再將數據x賦給s的數據域,
    再將1指針變成2,即將p->next賦給s->next,
    再讓改變後的p->next指向s
s=malloc(size);
s->sata=x;
s->next=p->next;
p->next=s;
  • 刪除

q=p->next;
x=q->data;
p->next=q->next;
free q;
在這裏插入圖片描述整體運行實驗代碼

#include "stdio.h"
#include "stdlib.h"
typedef struct ss
{ int data;  
  struct ss *next;    
}LNode;

LNode *Creat()
{ 
  LNode *h,*p,*q;
  int x;
  h=(LNode *)malloc(sizeof(LNode));
  h->next=NULL;
  q=h;
  scanf("%d",&x);
  while(x!=-1)
  { p=(LNode *)malloc(sizeof(LNode));
    p->data=x;
 p->next=NULL;
    q->next=p;
 q=p;
    scanf("%d",&x);
  }
  return h;
}
void  Out(LNode *h)
{ LNode *p;
  p=h->next;
  if(p==NULL)
  { printf("空表!\n");
    return;
  }
  while(p!=NULL){
  printf("%d",p->data);
  p=p->next;
  }
}
void InsertList(LNode *h,int i,int e)
{
 LNode *s,*p;
 int j=1;
 p=h->next;
 while(p&&j<i-1)
 {
  p=p->next;
  ++j;
 }
 s=(LNode *)malloc(sizeof(LNode));
 s->data=e;
 s->next=p->next;
 p->next=s;
 }
 void DelList(LNode *h,int i)
{
LNode *p,*q;
int j=1;
int e;
p=h->next;
while(p&&j<i-1)
{
 p=p->next;
 j++;
 }
 q=p->next;
 e=q->data;
 if(q->next!=NULL)
  p->next=q->next;
 else
  p->next=NULL;
 free(q);
 printf("\n刪除元素爲:%d",e);
 }
void main()
{ printf("請輸入鏈表數,每輸一個,enter一下,‘-1’結束\n");
  LNode *head;
  int i,x;
  head=Creat();
  Out(head);
  printf("\n請輸入插入位置(輸入-1結束):");
  scanf("%d",&i);
  printf("請輸入插入數據:");
 scanf("%d",&x);
 InsertList(head,i,x);
  printf("插入後單鏈表爲:\n");
  Out(head);
  printf("\n請輸入刪除位置:");
  scanf("%d",&i);
  DelList(head,i);
  printf("\n刪除後單鏈表爲:\n");
  Out(head);
  }

隨意輸出結果展示在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章