1. 程式人生 > >連結串列的基本使用一(構建連結串列)

連結串列的基本使用一(構建連結串列)

#構建連結串列

因為有不少朋友向我詢問連結串列的一些事情,他們都在問連結串列指標啥的寫起來都好麻煩的,有啥用呢。。。。。。。作為一隻萌新就淺談些我的一些感覺吧
我一開始的時候也是比較排斥連結串列的,因為這玩意一開始接觸真的感到太麻煩了,它做到的很多東西,陣列也都可以,為啥還要用這麼麻煩的方式呢。。。。後來上企業課的時候,開始模擬寫軟體,就是一個比較簡單的學生管理系統(最低階的那種),我們班的大多數同學都還沒有學連結串列,老師就用陣列來存學生資訊,然後,我就發現如果用陣列的話,你的資訊修改會非常的麻煩,不,是特別特別的麻煩。。。
所以呢,我現在才感受到了連結串列無比的優越性,所以呢學好連結串列對於以後的軟體開發的資料處理有著十分重要的作用。所以呢 ,就把那幾行碼碼過來。。。。。。希望能幫到我的同學

#include <stdio.h>
#include <stdlib.h>
struct node
{
	int num;
	struct node*next;
};
struct node*creat(int n)//連結串列的錄入
{
	struct node*head,*p,*q;
	head = (struct node*)malloc(sizeof(struct node));
	head->next = NULL;
	q = head;
	for(int i = 1;i<=n;i++)
	{
		p = (struct node*)malloc(sizeof(struct node));
		scanf("%d",&p->num);
			p->next = NULL;
			q->next = p;
			q = p;

	}
	return head;
}
void show(struct node*head)//連結串列的輸出
{
	struct node*tail;
	tail = head->next;
	while(tail!=NULL)
	{
		if(tail->next==NULL)
		printf("%d\n",tail->num);
		else
		printf("%d ",tail->num);
		tail = tail->next;
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	struct node*head;
	head = creat(n);
	show(head);
	return 0;
}

上面的這個是正序錄入的,下面的這個是逆序錄入,兩者差不多,就兩行程式碼不同,我在其後做出標記

#include <stdio.h>
#include <stdlib.h>
struct node
{
	int num;
	struct node*next;
};
struct node*creat(int n)
{
	struct node*head,*p,*q;
	head = (struct node*)malloc(sizeof(struct node));
	head->next = NULL;
	q = head;
	for(int i = 1;i<=n;i++)
	{
		p = (struct node*)malloc(sizeof(struct node));
		scanf("%d",&p->num);
		head->next = p->next;//××××
		head->next = p;//××××

	}
	return head;
}
void show(struct node*head)
{
	struct node*tail;
	tail = head->next;
	while(tail!=NULL)
	{
		if(tail->next==NULL)
		printf("%d\n",tail->num);
		else
		printf("%d ",tail->num);
		tail = tail->next;
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	struct node*head;
	head = creat(n);
	show(head);
	return 0;
}

相關推薦

連結串列基本使用構建連結串列

#構建連結串列 因為有不少朋友向我詢問連結串列的一些事情,他們都在問連結串列指標啥的寫起來都好麻煩的,有啥用呢。。。。。。。作為一隻萌新就淺談些我的一些感覺吧 我一開始的時候也是比較排斥連結串列的,因為

靜態連結串列基本操作C語言實現詳解

上節,我們初步建立了一個靜態連結串列,本節學習有關靜態連結串列的一些基本操作,包括對錶中資料元素的新增、刪除、查詢和更改。 本節是建立在已能成功建立靜態連結串列的基礎上,因此我們繼續使用上節中已建立好的靜態連結串列學習本節內容,建立好的靜態連結串列如圖 1 所示: 圖 1 建立好的靜態連結串列 靜態

單鏈表基本操作刪除連結串列中最大元素

題目描述: 設計一個演算法,刪除一個單鏈表L中元素值最大的節點(假設這樣的節點唯一) 解題思路: 在單鏈表中刪除一個節點先要找到它的前驅節點,用指標p掃描整個單鏈表,pre指向節點p的前驅節點,在掃描時用maxp指向data域值最大的節點,maxpre指向maxp所指節點的前驅節點,當連

資料結構—連結串列基本操作c語言程式碼

連結串列連結串列也是一種線性表,與順序表不同之處在於不像順序表佔據一段連續的儲存空間,而是將儲存單元分散在記憶體的任意地址上。連結串列結構中,儲存每個資料時候都會把記錄寫在連結串列的一個結點(node)中,每個結點之間由指標相連,形成如同鏈子的結構。結點(node):可以是一

【LeetCode】連結串列 linked list共34題

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica } 【2】Add Two Numbers    【19】Remove Nth Node From End of List (2018年10月30日

牛客網《劍指Offer》 程式設計 25.複雜連結串列的複製 最優解法

題目描述 輸入一個複雜連結串列(每個節點中有節點值,以及兩個指標,一個指向下一個節點,另一個特殊指標指向任意一個節點),返回結果為複製後複雜連結串列的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空) 解題思路 這次使用時間複雜度為O(n

資料結構學習筆記——C++實現雙向迴圈連結串列模板類超詳解

定義了兩個標頭檔案分別放置結點類模板(Node.h)和雙鏈表模板(DoubleLinkList.h), 然後在原始檔的main函式中測試。 Node.h #pragma once # include <iostream> template <class

關於連結串列的總結C++迴圈實現

0.目錄 1.連結串列的基本操作 1.1 結點定義 1.2 建立連結串列 1.3 銷燬連結串列 1.4 列印連結串列 1.5 獲取連結串列長度 2.結點的基本操作 2.1 刪除結點 2.2 查詢結點 3.面試題 3.1 反轉連結串列 3.2 合併兩

連結串列逆序遞迴法

來自SO,貌似沒啥實際應用,但是思路不錯,留存。 #include <Windows.h> #include <iostream> using namespace std; struct node { int data; node* next;

1.3.1線性連結串列之靜態結構體陣列連結串列

結構表示 #define     MAXSIZE    1000  //連結串列的最大長度 typedef   struct {      ElemType      data;      int                 cur;     //該結點所在位序 }c

[資料結構]連結串列的實現c++/類模板

#include <iostream> #include <cstdlib> using namespace std; //用struct定義LinkNode類.使用這種方法使該類失去封裝性,但簡化了描述. //在Link類中把first封裝在了其

有關連結串列的程式設計我的弱項

輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }

c++之連結串列篇2:單向連結串列的反轉詳細圖文解讀

在牛客網上刷題的過程遇到很多連結串列的問題,所以自己又結合著傳智播客上的視訊把連結串列整理了一下,本文是在上文的基礎上操作的,c++之連結串列篇1:單向連結串列的建立,列印,刪除,插入,銷燬等基本操作的。 本文中的單鏈表的反轉是對結點一個一個操作的,每次把後面的一個結點拋到

順序表和連結串列的優缺點區別、特點詳解

順序表和連結串列由於儲存結構上的差異,導致它們具有不同的特點,適用於不同的場景。本節就來分析它們的特點,讓讀者明白 "在什麼樣的場景中使用哪種儲存結構" 更能有效解決問題。 通過系統地學習順序表和連結串列我們知道,雖然它們同屬於線性表,但資料的儲存結構有本質的不同: 順序表儲存資料,需預先申請一整塊足夠

通用單向連結串列的實現附使用例子

當我開啟csdn,發現我有第一個粉絲了,激動得差點大喊“Hello World”,整晚都很開心,哈哈,為了保住我唯一的粉絲,我決定,以後勤快一點。今天就先出一篇通用連結串列實現的部落格,只包含了一個頭檔案(.h)和一個原始檔(.c),可以很方便地新增到你們的專案中。 lis

連結串列-遊標實現C語言版

如果用C/C++寫連結串列的話,用指標會比較方便,但很多語言都沒有指標,那麼怎麼實現比較好呢?遊標是個不錯的選擇。 在用指標實現的連結串列中,有這樣兩個特點: 1.資料存在一組結構體中,並且每個結構體都有指向下一個結構體的指標。 2.一個新

Python中有關連結串列的操作經典面試內容

1、建立一個連結node1 = Node("c",node3) 或者 node1 = Node("c",None) node1.next = node3 2、用迴圈建立一個連結串列結構,並且訪問其中的每一個節點class Node(object): def __ini

java使用連結串列實現棧先進後出

public class LinkStack <Item> implements Iterable<Item>{ private Node first;//棧頂

連結串列的排序交換指標指向

本學期c語言實習,要用到連結串列的排序。雖說以前沒用過,但還是花時間寫了寫。老師說排序的時候指標不變交換節點裡面的元素,我覺得這道不如交換指標的指向來的乾脆,因為如果按老師的方法來寫,節點裡的元素很多的話就廢了== #include <stdio.h> #inc

微信文章抓取:微信臨時連結轉永久連結方法,招擺脫連結過期煩惱

上一篇文章《微信文章抓取:微信公眾號文章抓取常識之臨時連結、永久連結》中介紹了微信臨時連結和微信永久連結的情況。那麼大家一定會有一個問題:如何讓臨時連結不再過期?或者說如何把臨時連結轉換為永久連結。 對於這個問題首先跟大家說一個事實,就是不論是臨時連結轉永久連結還是獲取微信文章的互動