當前位置:首頁 » 編程語言 » c語言單鏈表基礎知識
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言單鏈表基礎知識

發布時間: 2022-06-06 21:01:22

1. c語言如何創建單鏈表

C語言創建單鏈表如下:

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#include "iostream.h"

typedef struct node

{

intdata;

node * next;

}node , * List;

void create(int n)

{

int c;

List s,L;

L=(List)malloc(sizeof(node));

L->next=NULL;

printf("請輸入第1個數據:");

scanf("%d",&c);

L->data=c;

for(int i=2;i<=n;i++)

{

s=(List)malloc(sizeof(node));

printf("請輸入第%d個數據:",i);

scanf("%d",&c);

s->data=c;

s->next=L;

L->next =s;

}

printf("鏈表創建成功!");

}

void main()

{

int n;

printf("請你輸入鏈表的個數:");

scanf("%d",&n);

create(n);

}

2. C語言中有關鏈表的基礎知識

鏈表的關鍵就在這里:
struct
node
*
pnext;
你要遍歷的時候,可以通過pnext獲得下一個struct
node的地址。
比如struct
node
a,它的下一個是struct
node
b,這樣,a->pnext
=
&b

3. 用C語言編程實現單鏈表的基本操作

第二個顯示為什麼?為什麼什麼東西都沒有、
#include<stdio.h>
typedef
struct
sample
{
char
ch;
struct
sample
*next;
}LNode;
LNode
*Createlist(LNode
*head)
//創建單鏈表,頭插入法
{
LNode
*p;
if((head=(LNode
*)malloc(sizeof(LNode)))==NULL)
printf("aply
error\n");
head->next=NULL;
head->ch
=
'\0';
int
i=
0;
printf("請一次輸入A-Z:\n");
for(i
=
0
;
i
<
26;
++i)
{
p=(LNode
*)malloc(sizeof(LNode));
if(!p)
printf("aply
error\n");
scanf("%c",&p->ch);
p->next
=
head->next;
head->next=p;
}
return
head;
}
LNode
*EncryptList(LNode*
head)
{
LNode
*p=
head,*q
=
head->next,*r
=
head->next;
while(p->next)
{
p
=
p->next;
}
int
i
=
0
;
for(i
=
0
;
i
<
3;
i++)
{
p->next
=
r;
p
=
p->next;
q
=
q->next;
r
=
q;
}
p->next
=NULL;
head->next
=
q;
return
head;
}
void
ListPrint(LNode
*head)
{
LNode
*p
=
head->next;
while(p->next!=NULL)
{
printf("%c\t",p->ch);
p=p->next;
}
printf("%c\n",p->ch);
}
int
main(void)
{
LNode
*head;
head
=
Createlist(head);//鏈表初始化
ListPrint(head);
//列印單鏈表數據
head
=
EncryptList(head);
ListPrint(head);
return
0;
}
看看。

4. c語言數據結構單鏈表是什麼

head=(LNode *)malloc(sizeof(LNode));

這一句不要,沒啥用處,除非你head指向的節點也就是第一個節點的data不需要數據

head->next=NULL;這里修改為head=NULL;
讓head先指向NULL,也就是沒有節點
其實這個可以不要,再主函數中,先讓鏈表是空鏈表即可(即讓head=NULL)

head->data=data;
head->next=p->next;
head->next=p;
關鍵在這里
你仔細考慮一下,一般來說頭插法的head只是一個指針,不要對head指向的那個節點操作,對p操作完成後,讓head指過去即可
所以修改為
p->data=data; //賦值過去,因為你現在申請了p的內存空間
p->next=head; //把head指向的那個節點連接到p的後面,這樣完成頭插
// 這是head沒有用了,p成為鏈表的頭指針
head=p; //head再指向這個鏈表的頭部,也就是p指向的節點,為下一次循環做准備

head=Createlist(head);//鏈表初始化
主函數中這樣不太好,建議不要重名

5. 我是c語言的初學者(自學)學到鏈表是看不太懂了,現求簡單一點的鏈表的入門知識

先把指針看明白了,
不論單鏈表還是雙向鏈表都是一指針為基礎的.指針在c語言中很重要,也是最難明白的,好象現在流行的其它高級語言都不支持指針了.只要能把指針弄明白了,鏈表就簡單了.