<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

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

            時間:2025-12-03 15:51:18 C語言

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

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

              實例代碼:

              頭文件:

              #include <stdio.h>

              #include <stdlib.h>

              #include <malloc.h>

              typedef int ElemType;

              typedef struct Node

              {/pic/p>

              ElemType value;    /pic/p>

              struct Node *next;/pic/p>

              }Node,*ptr_Node;

              typedef struct LinkList

              {/pic/p>

              ptr_Node head; /pic/p>

              ptr_Node tail;/pic/p>

              int length;  /pic/p>

              }LinkList,*ptr_LinkList;

              ptr_LinkList CreateList(void)

              {/pic/p>

              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)

              {/pic/p>

              if(linklist->length==0)

              {

              return true;

              }

              return false;

              }

              void InsertListHead(ptr_LinkList linklist,ElemType element)

              {/pic/p>

              ptr_Node ptr_node;

              ptr_node=(Node *)malloc(sizeof(Node)); /pic/p>

              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; /pic/p>

              }

              linklist->length++; /pic/p>

              }

              }

              void InsertListTail(ptr_LinkList linklist,ElemType element)

              {

              ptr_Node ptr_node;

              ptr_node=(Node *)malloc(sizeof(Node)); /pic/p>

              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; /pic/p>

              }

              linklist->length++; /pic/p>

              }

              }

              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)); /pic/p>

              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++)

              {/pic/p>

              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)

              {/pic/p>

              ptr_Node p=linklist->head;

              ptr_Node q;

              while(p)

              {/pic/p>

              q=p->next;

              free(p);

              p=NULL;

              p=q;

              }

              }

              void Traverse(ptr_LinkList linklist)

              {/pic/p>

              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)

              {/pic/p>

              ptr_LinkList inverted_linklist;

              ptr_Node p;

              p=list->head;

              inverted_linklist=CreateList();/pic/p>

              while(p)

              {/pic/p>

              InsertListHead(inverted_linklist,p->value);

              p=p->next;

              }

              return inverted_linklist;

              }

              void InvertLinkList(ptr_LinkList linklist)

              {/pic/p>

              ptr_Node p,q,r,m;

              m=p=linklist->head;

              q=p->next;

              r=q->next;

              while(r)

              {/pic/p>

              q->next=p;

              p=q;

              q=r;

              r=r->next;

              }

              q->next=p; /pic/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語言實現方法12-10

            鏈表的C語言實現方法編程學習02-22

            c語言鏈表的用法03-10

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

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

            C語言輸出菱形的方法08-15

            C語言怎樣輸出菱形01-01

            C語言如何輸出菱形01-27

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院