c語言中的鏈表
A. c語言中鏈表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structrr
{
inti;
structrr*next;
};
structrr*creat(void)
{
inti,j;
structrr*p1,*p2,*t;//<==============
p1=p2=(structrr*)malloc(sizeof(structrr));
for(i=0;;)
{
printf("請輸入第%d個數據(0時結束) ",++i);
scanf("%d",&j);
//p1->i=j;
if(j==0)
break;
p1->i=j;//<==============
//p1=p1->next;
t=(structrr*)malloc(sizeof(structrr));//<==============
p1->next=t;//<==============
p1=t;//<==============
p1->next=NULL;//<==============
}
p1->next=NULL;//<==============
returnp2;
}
voidprint(structrr*k)
{
inti;
for(i=1;k->next!=NULL;i++)
{
printf("第%d個節點的數據is%d ",i,k->i);
k=k->next;
}
}
intmain()
{
structrr*head;
head=creat();
print(head);
printf("over ");
return0;
}
B. C語言里的鏈表
首先你要明白鏈表是什麼,鏈表中有1個數據區域和1個指針區域,指針區域存放的是下一個節點的地址(如果有下個節點的話),這是單鏈表,如果是雙鏈表的話,那麼有2個指針區域,1個指向前1個節點的地址,1個指向後1個節點的地址,如果對鏈表不是很熟悉,得先去看看數據結構,鏈表並不是數據結構裡面的東西。
接下來我們看看在C語言中如何表示鏈表。
typedef struct Linklist
{
int data;
struct Linklist * next;
}Linklist;
定義一個結構體來表示鏈表,int data 代表數據,根據實際情況自己修改,struct Linklist * next 代表指針,指向下1個節點的,比如現在有3個節點A B C ,如果他們的next為NULL ,這3個節點就是毫無關系的,分散的,如果定義A->next =&B B->next=&C 那麼他們就變成鏈表了,即A->B->C
如果是雙鏈表,那麼在結構體中定義的時候加上struct Linklist * prev 這個指針指向前1個節點的地址,比如A->next=&B B->prev=&A 那麼現在雙鏈表就為A B相互指向,這里不好畫出來就沒畫了。
至於鏈表的添加,刪除之類的可以再看看C語言裡面的,如果還不會在來問我吧~
C. C語言的鏈表怎麼用
c語言中,動態鏈表的使用方法:
1、創建節點的結構體類型,裡面要有一個指向此類型結構的指針。
2、建立一個頭指針,一個尾指針
3、每次有新節點進入鏈表時,用malloc分配空間,然後用鏈表尾端的節點指針指向新節點,新節點的指針指向null。
D. C語言中怎麼定義鏈表,最好把各個代碼都詳細的解釋一下!
/*creat
a
list*/
#include
"stdlib.h"
#include
"stdio.h"
struct
list
{
int
data;
struct
list
*next;
};
typedef
struct
list
node;
typedef
node
*link;
void
main()
{
link
ptr,head;
int
num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please
input
5
numbers==>\n");
for(i=0;i<=4;i++)
{
scanf("%d",&num);
ptr->data=num;
ptr->next=(link)malloc(sizeof(node));
if(i==4)
ptr->next=NULL;
else
ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{
printf("The
value
is
==>%d\n",ptr->data);
ptr=ptr->next;
}
}
上面是一個簡單的創建鏈表的C程序。所謂鏈表形象的講就是一個數據塊裡面存有數據,並且存有下一個數據的指針,這樣一個指一個形成一個數據鏈。這個數據鏈可以被操作,例如插入數據,刪除數據,等。至於指令,首先定義一個結構體,它存有數據和指向下一個數據塊的指針。然後分配空間。注意最後一個為NULL,當然你也可以指向開頭一個數據塊形成一個循環鏈表。
E. C語言中的鏈表怎麼理解
鏈表是相同類型的若干個結構體用其自身攜帶的指針按照一定順序串聯成的一個鏈。
舉個簡單例子進行類比:
struct node{
int a;
struct node *next;
};
把這個鏈表節點的結構體struct node看作是人,結構體內的next指針看作是人的一隻手,這只手只能用於指向人(別人或自己)。
如果有多個人排成一排,每個人都舉起右手指向右邊的人,就形成一個人組成的鏈表。
F. 計算機c語言中什麼是鏈表
簡單來說就是「承上啟下」,區別於正常數組,存儲的時候不是一連串連續的內存地址。
鏈表的特點在於結點,struct stu{
int num;
int score;
struct stu *next;
}
這就是一個簡單的鏈表,
上邊兩個是數據域,最後一個是指針域
指針域交代了下一個數據是存在哪裡的,
這樣計算機就可以直接去找到了。
這樣便於插入和刪除,缺點就是同等的空間下,鏈表存的數據少,因為他多了指針域。
G. C語言 中的鏈表究竟是什麼老師講的聽不懂
比如說 數組 他的存儲 是一塊 連續的空間 一整塊
鏈表 就是 可以分散存儲 只有這個空間 夠用 就可以存儲 不用 分配 一塊 很大的連續空間 也就是 「見縫插針」的意思
H. c語言中的鏈表是什麼
就是一連續內存空間,類似於數組,不過數組的內存空間一旦初始化就是不變的。
鏈表開始是一個「頭指針」,定義了鏈表開始的位置,下面是像鏈條一樣的一串節點,每個節點包含數據部分和指針部分。前一節點的指針指向後一節點,最後一個節點是數據和空地址,表示結束。
好處在於空間是動態分配的,需要多長可以一直鏈下去。
I. c語言鏈表,求用通俗的話解釋
鏈表是一種常見的重要的數據結構.它是動態地進行存儲分配的一種結構.我們知道,用數組存放數據時,
必須事先定義固定的長度(即元素個數).比如,有的班級有100人,而有的班只有30人,如果要用同一個數組先後存放不同班級的學生數據,則必須定義長度為100的數組.如果事先難以確定一個班的最多人數,則必須把數組定得足夠大,以能存放任何班級的學生數據.顯然這將會浪費內存.鏈表則沒有這種缺點,它根據需要開辟內存單元.圖10.11表示最簡單的一種鏈表(單向鏈表)的結構.鏈表有一個"頭指針"變數,圖中以head表示,它存放一個地址.
該地址指向一個元素.鏈表中每一個元素稱為"結點",每個結點都應包括兩個部分:一為用戶需要用的實際數據,二為下一個結點的地址.課以看出,head指向第一個元素;第一個元素又指向第二個元素;……,直到最後一個元素,該元素不再指向其它元素,它稱為'表尾",它的地址部分放一個"NULL"(表示"空地址").鏈表到此結束.
可以看到:鏈表中各元素在內存中可以不是連續存放的.要找某一元素,必須先找到上一個元素,根據它提供的下一元素地址才能找到下一個元素.
如果不提供"頭指針"(head),則整個鏈表都無法訪問.鏈表如同一條鐵鏈一樣,一環扣一環,中間是不能斷開的.打個通俗的比方:幼兒園的老師帶領孩子出來散步,老師牽著第一個小孩的手,第一個小孩的另一隻手牽著第二個孩子,……,這就是一個"鏈",最後一個孩子有一隻手空著,他是"鏈尾".要找這個隊伍,必須先找到老師,然後順序找到每一個孩子.
J. c語言鏈表
指針在x86系統里大小是32位4個位元組,在64位系統是8位元組大小。指針好比一個盒子,盒子里有個東西也就是它指向的內容,內容是一個實體對象的首地址。盒子本身不能存放實體對象,就好比盒子里有張名片,通過名片你可以找到這個人,總不能把人放盒子里吧。
得有這個人然後把找到這個人的名片放盒子里。