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

c語言單鏈表

發布時間: 2022-02-04 07:06:50

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

}

② 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);

}

③ C語言鏈表問題

#include
"malloc.h"
struct
num
{
int
a;
struct
num
*next;
};
void
main()
{
int
i,n=0;
struct
num
*head,*p1,*p2;
head=(struct
num
*)
malloc(sizeof(struct
num));
p1=head;
/*p2=head;*/
for
(i=0;i<5;i++)
{
p2=(struct
num
*)
malloc(sizeof(struct
num));
scanf("%d",&n);
p2->a=n;
p1->next=p2;
p1=p2;
}
p1->next=NULL;
p1=head->next;
while(p1!=NULL)
{
printf("%d
",p1->a);
p1=p1->next;
}
printf("\n");
}
***********************************************************
#include
"malloc.h"
struct
num
{
int
a;
struct
num
*next;
};
void
main()
{
int
i,n=0;
struct
num
*head,*p1,*p2;
head=(struct
num
*)
malloc(sizeof(struct
num));
p1=head;
/*p2=head;*/
for
(i=0;i<5;i++)
{
p2=(struct
num
*)
malloc(sizeof(struct
num));
scanf("%d",&(p2->a));
p1->next=p2;
p1=p2;
}
p1->next=NULL;
p1=head->next;
while(p1!=NULL)
{
printf("%d
",p1->a);
p1=p1->next;
}
printf("\n");
}

{
http://chinastar.uueasy.com/read-htm-tid-292-fpage-6.html}
可以看一下這篇文章,鏈表創建輸出

④ c語言鏈表

指針在x86系統里大小是32位4個位元組,在64位系統是8位元組大小。指針好比一個盒子,盒子里有個東西也就是它指向的內容,內容是一個實體對象的首地址。盒子本身不能存放實體對象,就好比盒子里有張名片,通過名片你可以找到這個人,總不能把人放盒子里吧。
得有這個人然後把找到這個人的名片放盒子里。

⑤ c語言單向鏈表的問題

完善了一下,頭結點沒存數,print時要從第二個開始:
#include<stdio.h>
#include<stdlib.h>
struct
node{
int
num;
struct
node
*next;
};
//構建空的鏈表
void
InitList(struct
node
*&L){//修改
L
=
(struct
node*)malloc(sizeof(struct
node));
L->next
=
NULL;
L->num=0;
printf_s("InitList
sucess!");
}
//創建單鏈表
void
CreateList(struct
node
*&L,int
n){//修改
struct
node
*temp,*p;
L
=
(struct
node*)malloc(sizeof(struct
node));
L->next
=
NULL;
L->num=0;
temp=L;
for
(int
i
=
0;
i
<
n;
i++){
p
=
(struct
node*)malloc(sizeof(struct
node));
scanf_s("%d",
&p->num);
temp->next
=
p;
temp
=
p;
}
temp->next
=
NULL;
}
void
PrintList(struct
node
*L){
struct
node
*temp
=
L->next;//修改,頭結點不使用
while
(temp
!=
NULL){
printf("%d",
temp->num);
temp
=
temp->next;
}
}
void
PrintMenu(){
printf_s("------Menu------\n");
printf_s("0
InitList\n");
printf_s("1
CreateList\n");
printf_s("2
PrintList\n");
}
void
main(){
int
n,c;
struct
node
*La;
c=1;
while(c>=0)
{
PrintMenu();
printf_s("Enter
the
command:
");
scanf_s("%d",
&c);
switch
(c){
case
0:
InitList(La);
break;
case
1:
printf_s("Enter
the
number
of
LinkList:
");
scanf_s("%d",
&n);
CreateList(La,
n);
break;
case
2:
PrintList(La);
break;
default:
printf_s("ERROR,Enter
again:
");
break;
}
}
struct
node
*te;//增加釋放空間
if(La)
{
te=La->next;
free(La);
La=te;
}
system("pause");
}

⑥ C語言單鏈表合並

#include<stdio.h>#include<stdlib.h>structlist{intdata;structlist*next;};//兩個鏈表融合,插入排序函數voidsort(structlist*l1,structlist*l2);//輸出鏈表voidoutput(structlist*head);//輸入鏈表voidinput(structlist*head,intnum);intmain(){intn;list*h1,*h2;//兩個鏈表的頭,下面四行初始化鏈表h1=(structlist*)malloc(sizeof(structlist));h2=(structlist*)malloc(sizeof(structlist));h1->next=NULL;h2->next=NULL;//兩個鏈表輸入printf("請輸入第一個鏈表節點數: ");scanf("%d",&n);input(h1,n);printf("請輸入第二個鏈表節點數: ");scanf("%d",&n);input(h2,n);//合並鏈表並排序sort(h1,h2);//輸出合並後的鏈表output(h1);}voidinput(structlist*head,intnum){structlist*tmp;structlist*end;end=head;printf("請輸入鏈表節點: ");for(inti=0;i!=num;i++){tmp=(structlist*)malloc(sizeof(structlist));scanf("%d",&tmp->data);end->next=tmp;tmp->next=NULL;end=tmp;}}voidsort(structlist*l1,structlist*l2){structlist*p1,*p2,*tmp;p1=l1;p2=l2->next;while(p1->next&&p2){if(p1->next->data>p2->data){tmp=p2->next;p2->next=p1->next;p1->next=p2;p2=tmp;}elsep1=p1->next;}if(p2)p1->next=p2;}voidoutput(structlist*head){while(head->next){printf("%d",head->next->data);head=head->next;}}

⑦ C語言鏈表···

struct date{…}/鏈表結構體
p1/定義鏈表結構體的一個指針名插入點/
p1=(struct date *)malloc(sizeof(struct date))/分配鏈表內存
free(newnode)/釋放節點內存
刪除全部節點定義兩個鏈表指針名p1,p2循環刪除
while(p1->next!=NULL)
{p2=p1;
p1->…/p1指向下鏈表一節點
free(p2);
}

⑧ c語言創建鏈表

1、你使用了malloc函數但沒有導入頭文件malloc.h。
2、函數DATA *create(int n);沒有申明就直接調用。
(另外main函數中DATA* head;給個初值NULL,避免野指針。)
修改以上內容,親測可運行。

⑨ C語言鏈表相關

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#defineMAXSIZE100

typedefstructnode{
charname[21];
intnumber;
charsex;
structnode*next;
}linklist;

linklist*CreateList(){
charname[21]="";
linklist*head,*p;
p=head=(linklist*)malloc(sizeof(linklist));//這是頭結點
scanf("%s",name);
while(name[0]!='#'){
p->next=(linklist*)malloc(sizeof(linklist));
strcpy(p->next->name,name);
scanf("%d",&p->next->number);
scanf("%c",&p->next->sex);
p=p->next;
fflush(stdin);
scanf("%s",name);
}
p->next=NULL;
returnhead;
}

voidDelete(linklist*head,linklist*t){
linklist*p=head->next;
while(p)p=p->next;
p->next=t->next;
free(t);
}

linklist*Locate(linklist*head,intnum){
linklist*p=head->next;
while(p){
if(p->number==num)returnp;
p=p->next;
}
returnNULL;
}

voidOutput(linklist*head){
linklist*r=head->next;
while(r){
printf("%s%d%c ",r->name,r->number,r->sex);
r=r->next;
}
}

intmain(void){
intnum;
linklist*L;
linklist*p;
printf("輸入學生信息:");
L=CreateList();
Output(L);
fflush(stdin);
printf("輸入要刪除學生的學號:");
scanf("%d",&num);
p=Locate(L,num);
if(p==NULL){
printf("No ");
return1;
}
else{
Delete(L,p);
Output(L);
}
return0;
}

⑩ 關於c語言鏈表

因為你只創建了一個啊,你的本意是用create函數執行創建鏈表的工作,不管多少個都是由它完成的,但是你的create函數明明沒有while循環或者dowhile循環啊,只做了一遍啊,第一遍的if做完了,第一個鏈表完成了,再次scanf了之後,就退出來了啊,在你創建了一個鏈表之後,就在那個鏈表的尾部寫入NULL了,程序就結束了啊,又沒一直做scanf,和創建鏈表的工作。create沒循環啊,列印鏈表是沒錯啊,輸出了第一個啊,你自己創建的第一個叫head,只有後面的鏈接,自己本身沒有存放任何數,只輸出了第二個鏈表,第二鏈表的next就是NULL了,輸出當然就停止了啊。

怕我沒說清楚,或者把你繞暈了,所以我截個圖給你看。

你這個if只做了一遍啊,沒有循環啊,然後就再次用scanf了,然後呢?然後就退出if了吧,然後就執行了r->next=NULL;對吧,r不就是你創建的第一個有數據的鏈表嗎?然後就return h了,那麼只有一個啊,有循環嗎?scanf了之後,也沒判斷數值啊,不是-1,應該繼續做啊。

解決方案:在這個if的外面,加一個do while的循環,然後判斷scanf讀入的n的值,應該就可以了。