成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

[c語言]單鏈表的實(shí)現(xiàn)

一、基礎(chǔ)知識:鏈表(線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu))

在海晏等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),海晏網(wǎng)站建設(shè)費(fèi)用合理。

(1)特點(diǎn):邏輯關(guān)系相鄰,物理位置不一定相鄰。

(2)分類:

     a.不帶頭節(jié)點(diǎn)

[c語言]單鏈表的實(shí)現(xiàn)

    b.帶頭節(jié)點(diǎn)

[c語言]單鏈表的實(shí)現(xiàn)

(3)單鏈表的存儲結(jié)構(gòu):

typedef struct SListNode

{

 DataType data;

 struct SListNode* next;

}SListNode;

 

二、代碼實(shí)現(xiàn)(因避開使用二級指針,所以代碼中使用了c++中的引用):此處構(gòu)造的為不帶頭節(jié)點(diǎn)的鏈表

(1)sList.h

 
#pragma once
typedef int DataType;
typedef struct SListNode
{
 DataType data;
 struct SListNode* next;
}SListNode;
void PushBack(SListNode* & pHead, DataType d);
void PopBack(SListNode* & pHead);
void PushFront(SListNode* & pHead, DataType d);
void PopFront(SListNode* & pHead);
void PrintList(SListNode* pHead);
SListNode* Find(SListNode* & pHead, DataType d);
void Insert(SListNode* & pos, DataType d);

(2)sList.cpp

#include <stdio.h>
#include <malloc.h>
#include <assert.h>
#include "sList.h"
SListNode* MakeNode(DataType d)
{
 SListNode* tmp = (SListNode*)malloc(sizeof(SListNode));
 tmp->data = d;
 tmp->next = NULL;
 return tmp;
}
void PushBack(SListNode* & pHead, DataType d)
{
 //1.空
 //2.不空
 if(pHead == NULL)
 {
  pHead = MakeNode(d);
 }
 else
 {
  //先找尾,再插入新節(jié)點(diǎn)
  SListNode* tail = pHead;
  while(tail->next != NULL)
  {
   tail = tail->next;
  }
  tail->next = MakeNode(d);
 }
}
void PopBack(SListNode* & pHead)
{
 //1.空
 //2.一個(gè)節(jié)點(diǎn)
 //3.多個(gè)節(jié)點(diǎn)
 if(pHead == NULL)
 {
  return;
 }
 else if (pHead->next == NULL)
 {
  free(pHead);
  pHead = NULL;
 }
 else
 {
  SListNode* tail = pHead;
  SListNode* prev = NULL;
  while(tail->next != NULL)
  {
   prev = tail;
   tail = tail->next;
  }
  prev->next = NULL;
  free(tail);
 }
}
void PushFront(SListNode* & pHead, DataType d)
{
 if(pHead == NULL)
 {
  pHead = MakeNode(d);
 }
 else
 {
  SListNode* tmp = pHead;
  pHead = MakeNode(d);
  pHead->next = tmp;
 }
}
void PopFront(SListNode* & pHead)
{
 if(!pHead)
 {
  printf("List is empty!");
  return;
 }
 else
 {
  SListNode* tmp = pHead;
  pHead = pHead->next;
  free(tmp);
 }
}
SListNode* Find(SListNode* & pHead, DataType d)
{
 SListNode* find = pHead;
 while(find)
 {
  if(find->data == d)
   return find;
  find = find->next;
 }
 return NULL;
}
void Insert(SListNode* & pos, DataType d)
{
 assert(pos);
 /*
 方法一:
 SListNode* tmp = MakeNode(d);
 tmp->next = pos->next;
 pos->next = tmp;
 */
 //方法二:
 SListNode* next = pos->next;
 pos->next = MakeNode(d);
 pos->next->next = next;
}
void Erase(SListNode*& pHead,SListNode* & pos)
{
 assert(pos&&pHead);
 SListNode* prev = pHead;
 while(prev->next != pos)
 {
  prev = prev->next;
 }
 prev->next = pos->next;
 free(pos);
 pos = NULL;
}
void PrintList(SListNode* pHead)
{
 SListNode* tmp = pHead;
 while(tmp)
 {
  printf("%d->", tmp->data);
  tmp = tmp->next;
 }
 printf("NULL\n");

(3)test.cpp

#include "sList.h"
#include <stdio.h>
#include <stdlib.h>

void test1()
{
 //不帶頭節(jié)點(diǎn)
 SListNode* list = NULL;
 PushBack(list, 1);
 PushBack(list, 2);
 PushBack(list, 3);
 PushBack(list, 4);
// PushFront(list,0);
// PopFront(list);
// PopBack(list);
 SListNode* ret = Find(list, 2);
 if(ret == NULL)
 {
  printf("No Exist!\n");
  return;
 }
// Insert(ret, 4);
 Erase(list,ret);
 PrintList(list);
}
int main()
{
 test1();
 system("pause");
 return 0;

 

本文標(biāo)題:[c語言]單鏈表的實(shí)現(xiàn)
URL網(wǎng)址:http://jinyejixie.com/article4/ieppie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化企業(yè)建站、建站公司網(wǎng)站內(nèi)鏈、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
长葛市| 大关县| 赣榆县| 溧水县| 南城县| 南康市| 沈丘县| 渝北区| 泗洪县| 沽源县| 石河子市| 西丰县| 都兰县| 美姑县| 宝山区| 景宁| 紫金县| 铁岭县| 平江县| 香港| 沁源县| 乌鲁木齐县| 兴隆县| 南靖县| 彭阳县| 都安| 偃师市| 凌云县| 西畴县| 西和县| 社会| 大连市| 马边| 高阳县| 鄂温| 贡觉县| 鹤峰县| 临沭县| 乐清市| 突泉县| 囊谦县|