C 語言程式,用單鏈表來反序顯示數字


連結串列用動態記憶體分配,是節點的集合。

節點有兩部分,即資料和連結。

連結串列型別

C 程式語言中的連結串列型別如下 −

  • 單向/單鏈表
  • 雙向/雙鏈表
  • 環形單鏈表
  • 環形雙鏈表

單鏈表

下圖描述了單鏈表的表示。

示例

以下是用 C 程式透過單鏈表反序顯示數字的示例 −

 即時演示

#include <stdio.h>
#include <stdlib.h>
struct node {
   int num;
   struct node *nextptr;
}*stnode;
void createNodeList(int n);
void reverseDispList();
void displayList();
int main(){
   int n;
   printf("

single Linked List : print it in reverse order :
");    printf("------------------------------------------------------------------------------
");    printf(" Input the number of nodes : ");    scanf("%d", &n);    createNodeList(n);    printf("
Data entered in the list are :
");    displayList();    reverseDispList();    printf("
The list in reverse are :
");    displayList();    return 0; } void createNodeList(int n){    struct node *fnNode, *tmp;    int num, i;    stnode = (struct node *)malloc(sizeof(struct node));    if(stnode == NULL) {       printf(" Memory can not be allocated.");    }    else{       // reads data for the node through keyboard       printf(" Input data for node 1 : ");       scanf("%d", &num);       stnode-> num = num;       stnode-> nextptr = NULL;       tmp = stnode;       //Creates n nodes and adds to linked list       for(i=2; i<=n; i++){          fnNode = (struct node *)malloc(sizeof(struct node));          if(fnNode == NULL) {             printf(" Memory can not be allocated.");             break;          }          else{             printf(" Input data for node %d : ", i);             scanf(" %d", &num);             fnNode->num = num;             fnNode->nextptr = NULL;             tmp->nextptr = fnNode;             tmp = tmp->nextptr;          }       }    } } void reverseDispList(){    struct node *prevNode, *curNode;    if(stnode != NULL){       prevNode = stnode;       curNode = stnode->nextptr;       stnode = stnode->nextptr;       prevNode->nextptr = NULL; //convert the first node as last       while(stnode != NULL){          stnode = stnode->nextptr;          curNode->nextptr = prevNode;          prevNode = curNode;          curNode = stnode;       }       stnode = prevNode; //convert the last node as head    } } void displayList(){    struct node *tmp;    if(stnode == NULL){       printf(" No data found in the list.");    }    else{       tmp = stnode;       while(tmp != NULL){          printf(" Data = %d
", tmp->num);          tmp = tmp->nextptr;       }    } }

輸出

當執行以上程式時,將產生以下結果 −

Single Linked List : print it in reverse order :
------------------------------------------------------------------------------
Input the number of nodes : 5
Input data for node 1 : 12
Input data for node 2 : 45
Input data for node 3 : 11
Input data for node 4 : 9
Input data for node 5 : 10

Data entered in the list are :
Data = 12
Data = 45
Data = 11
Data = 9
Data = 10

The list in reverse are :
Data = 10
Data = 9
Data = 11
Data = 45
Data = 12

更新時間: 03-Sep-2021

668 次瀏覽

開啟你的 職業生涯

透過完成課程獲取認證

開始學習
廣告