奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言數據結構實現鏈表逆序并輸出

時間:2025-04-27 06:07:55 C語言 我要投稿
  • 相關推薦

C語言數據結構實現鏈表逆序并輸出

  將一個鏈表逆序并輸出。可以用兩種方法來實現,第一種是借助了一個新的空鏈表;第二種是在原來鏈表的基礎上直接實現逆序。下面百分網小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!

  實例代碼:

  頭文件:

  #include <stdio.h>

  #include <stdlib.h>

  #include <malloc.h>

  typedef int ElemType;

  typedef struct Node

  {//結點結構

  ElemType value;    //值域

  struct Node *next;//指針域

  }Node,*ptr_Node;

  typedef struct LinkList

  {//鏈表結構

  ptr_Node head; //鏈表頭結點指針

  ptr_Node tail;//鏈表尾結點指針

  int length;  //鏈表長度

  }LinkList,*ptr_LinkList;

  ptr_LinkList CreateList(void)

  {//創建一個空鏈表

  ptr_LinkList linklist;

  linklist=(LinkList *)malloc(sizeof(LinkList));

  if(!linklist)

  {

  printf("allocation failed.\n");

  }

  linklist->head=NULL;

  linklist->tail=NULL;

  linklist->length=0;

  return linklist;

  }

  bool IsListEmpty(ptr_LinkList linklist)

  {//判斷鏈表是否為空

  if(linklist->length==0)

  {

  return true;

  }

  return false;

  }

  void InsertListHead(ptr_LinkList linklist,ElemType element)

  {//在表頭插入值為element的結點作為新的表頭

  ptr_Node ptr_node;

  ptr_node=(Node *)malloc(sizeof(Node)); //生成插入結點

  if(!ptr_node)

  {

  printf("allocation failed.\n");

  }

  else

  {

  ptr_node->value=element;

  if(linklist->length==0)

  {

  linklist->head=ptr_node;

  linklist->tail=linklist->head;

  linklist->tail->next=NULL;

  }

  else

  {

  ptr_node->next=linklist->head;

  linklist->head=ptr_node; //鏈表頭

  }

  linklist->length++; //鏈表長度加1

  }

  }

  void InsertListTail(ptr_LinkList linklist,ElemType element)

  {

  ptr_Node ptr_node;

  ptr_node=(Node *)malloc(sizeof(Node)); //生成插入結點

  if(!ptr_node)

  {

  printf("allocation failed.\n");

  }

  else

  {

  ptr_node->value=element;

  if(linklist->length==0)

  {

  linklist->head=ptr_node;

  linklist->tail=linklist->head;

  linklist->tail->next=NULL;

  }

  else

  {

  linklist->tail->next=ptr_node;

  linklist->tail=ptr_node; //鏈表尾

  }

  linklist->length++; //鏈表長度加1

  }

  }

  void InsertListPosition(ptr_LinkList linklist,int pos,ElemType element)

  {

  int i;

  ptr_Node ptr_node;

  ptr_Node temp_ptr_node;

  if(pos<1 || pos>linklist->length)

  {

  printf("The insert position is invalidate.\n");

  }

  else

  {

  ptr_node=(Node *)malloc(sizeof(Node)); //生成插入結點

  if(!ptr_node)

  {

  printf("allocation failed.\n");

  }

  ptr_node->value=element;

  if(pos==1)

  {

  InsertListHead(linklist,element);

  }

  else if(pos==linklist->length)

  {

  InsertListTail(linklist,element);

  }

  else

  {

  temp_ptr_node=linklist->head;

  for(i=1;i<pos-1;i++)

  {//找到第pos-1個結點

  temp_ptr_node=temp_ptr_node->next;

  }

  ptr_node->next=temp_ptr_node->next;

  temp_ptr_node->next=ptr_node;

  linklist->length++;

  }

  }

  }

  void Destroy(ptr_LinkList linklist)

  {//銷毀鏈表

  ptr_Node p=linklist->head;

  ptr_Node q;

  while(p)

  {//釋放每個結點空間

  q=p->next;

  free(p);

  p=NULL;

  p=q;

  }

  }

  void Traverse(ptr_LinkList linklist)

  {//輸出整個鏈表

  ptr_Node p;

  p=linklist->head;

  while(p)

  {

  printf("%4d",p->value);

  p=p->next;

  }

  }

  頭文件中實現了鏈表的幾個基本的操作,有的是必須的,有些是非必須的。

  實現代碼:

  #include "stdafx.h"

  #include "LinkList.h"

  #include <conio.h>

  ptr_LinkList InvertList(ptr_LinkList list)

  {//該方法借助一個新的空鏈表來實現鏈表逆序

  ptr_LinkList inverted_linklist;

  ptr_Node p;

  p=list->head;

  inverted_linklist=CreateList();//創建一個空鏈表

  while(p)

  {//將list鏈表中的結點值逆序輸入新創建的鏈表中,實現鏈表反轉

  InsertListHead(inverted_linklist,p->value);

  p=p->next;

  }

  return inverted_linklist;

  }

  void InvertLinkList(ptr_LinkList linklist)

  {//該方法直接對原有鏈表實現逆序,不借助其他鏈表

  ptr_Node p,q,r,m;

  m=p=linklist->head;

  q=p->next;

  r=q->next;

  while(r)

  {//依次對鏈表中的結點進行反轉

  q->next=p;

  p=q;

  q=r;

  r=r->next;

  }

  q->next=p; //最后一個結點反轉

  linklist->head=q;

  linklist->tail=m;

  linklist->tail->next=NULL;

  }

  int _tmain(int argc, _TCHAR* argv[])

  {

  ptr_LinkList linklist;

  ptr_LinkList list;

  linklist=CreateList();

  if(linklist)

  {

  printf("We have created a new linklist.\n");

  }

  InsertListHead(linklist,12);

  InsertListHead(linklist,35);

  InsertListHead(linklist,66);

  InsertListHead(linklist,06);

  InsertListHead(linklist,11);

  InsertListHead(linklist,54);

  InsertListHead(linklist,79);

  Traverse(linklist);

  printf("\n");

  printf("The first method:\n");

  list=InvertList(linklist);

  Traverse(list);

  printf("\n");

  printf("The second method:\n");

  InvertLinkList(linklist);

  Traverse(linklist);

  printf("\n");

  getch();

  return 0;

  }

  9C++常用字符串分割方法實例匯總

【C語言數據結構實現鏈表逆序并輸出】相關文章:

C語言鏈表逆序方法技巧01-27

鏈表的C語言實現方法04-03

鏈表的C語言實現方法編程學習06-12

c語言鏈表的用法03-10

c語言鏈表的用法有哪些01-24

C#數據結構之循環鏈表的實例代碼03-15

C語言的循環鏈表和約瑟夫環04-12

C語言輸出菱形的方法07-31

C語言怎樣輸出菱形08-02

主站蜘蛛池模板: 文化| 磐安县| 邵阳市| 济源市| 周口市| 托克逊县| 九龙城区| 株洲市| 伊通| 扎鲁特旗| 漳平市| 会同县| 兰州市| 荃湾区| 香格里拉县| 麻栗坡县| 蕉岭县| 昌平区| 永安市| 汨罗市| 乐平市| 峡江县| 濮阳市| 伊川县| 禹城市| 蒙城县| 周宁县| 乌鲁木齐市| 三门峡市| 杭锦后旗| 同心县| 锦屏县| 宁乡县| 黎城县| 中西区| 枣阳市| 文成县| 太原市| 玛多县| 武隆县| 泰宁县|