A. c語言中的單鏈表的表頭,頭結點,第一個節點,表尾,尾節點,最後一個節點有什麼不同與聯系
表頭 頭結點 第一個節點 表尾 尾節點
帶頭鏈表: 頭結點 頭結點 第一個節點 最後一個節點 最後一個
不帶頭鏈表: 第一個 第一個 第一個 最後一個 最後一個
B. C語言如何刪除鏈表頭節點
這種刪除方法是頭節點存放值的,這樣可以清楚的看到是否刪除掉了頭節點。
用p保存頭節點 p=head;
head指向下一個節點,成為新的頭節點head=p->next;
釋放原來的頭節點 free(p);
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
voidprintList(structnode*head);
structnode*delHead(structnode*head);
structnode{
intdata;
structnode*next;
};
intmain(){
inti;
structnode*tail,*head,*p;
//尾插法插入數據
p=(structnode*)malloc(sizeof(structnode));
p->data=0;
tail=head=p;
tail->next=NULL;
for(i=1;i<10;i++){
p=(structnode*)malloc(sizeof(structnode));
tail->next=p;
p->data=i;
p->next=NULL;
tail=p;
}
printList(head);
head=delHead(head);
printList(head);
system("pause");
return0;
}
//刪除頭結點
structnode*delHead(structnode*head){
structnode*p=head;
head=p->next;
free(p);
returnhead;
}
//列印鏈表
voidprintList(structnode*head){
structnode*p=head;
while(p!=NULL){
printf("%i",p->data);
p=p->next;
}
printf(" ");
}
C. C語言 單向鏈表的頭結點問題
1.頭結點是單向鏈表的第一個結點,一般設一個指向頭結點的指針,頭結點一般存放鏈表的長度信息,如果有其他需要也可以存放其他信息,看你的需求了。
2.如果你的鏈表第一個結點沒有存放鏈表信息而是存放了實際的數據,那麼就是說你的鏈表是不帶頭結點的鏈表
實際上帶不帶頭結點的鏈表都是可以使用的,看你的喜好了。呵呵!
D. c語言中,頭指針,表頭指針,頭結點,第一結點分別是什麼舉個例子,謝謝。
頭指針是以確定線性表中第一個元素對應的存儲位置,一般用於處理數組,鏈表,隊列等數據結構。單鏈表可以用頭指針的名字來命名。單鏈表中頭指針指向頭節點。頭指針指向上述數據結構的起始數據的指針,如指向數組首地址的指針,指向鏈表表頭節點的指針。
頭指針也就是表頭指針
在單鏈表的第一個結點之前附設一個結點(是個結構體),稱之為頭結點。頭結點的數據域可以不存儲任何信息,頭結點的指針域存儲指向第一個結點的指針(即第一個元素結點的存儲位置)。頭結點的作用是使所有鏈表(包括空表)的頭指針非空,並使對單鏈表的插入、刪除操作不需要區分是否為空表或是否在第一個位置進行,從而與其他位置的插入、刪除操作一致。
第一節點,不太清楚,應該是鏈表有效數據存儲的第一個節點吧,就是去除了頭結點的第一個節點。
E. c語言鏈表中表頭結點和頭指針有啥區別
鏈表頭節點是一個節點,節點里包含數據和指向下一個節點的指針;而頭指針是一個指針,它用來指向頭節點。
F. C語言中的單鏈表,表頭,首元結點有什麼區別
按照字面意思理解:表頭:單鏈表的頭,一般不存放元素,而存放其他信息例如鏈表長度等。
首元節點:第一個元素的節點。如果有的單鏈表沒有存放其他信息的表頭,那麼首元節點就是表頭,否則首元節點是表頭之後第一個節點。
G. 請問下C語言的鏈表的結點是什麼結點是指針變數嗎還是就是一個值
頭指針,是指向鏈表頭的指針。
頭結點,是鏈表頭指針指向的節點,通常是後添加的不包含任何數據信息的節點,而第一個節點才是真正的鏈表中的數據節點。
表頭,就是頭結點。
數據結構的教材中會有更好的講解,望採納,謝謝。
H. C語言鏈表的頭結點不能存放數據為什麼
配置頭結點是為了操作方便,所以通常頭結點的數據域是不使用的,「不使用」並不等同於「不能使用」,比如可以在頭結點數據域存放本鏈表中共有的結點數,也可以給適當的值,表示本鏈表是否是有序的。總之,「鏈表的頭結點不能存放數據」的說法是錯誤的。
I. 請問各位高手,c語言中怎麼建立一個帶有頭節點的鏈表
head=(node*)malloc(sizeof(node));/ /創建頭結點
head->next=NULL;
while(n--)
{
printf("\n請輸入單鏈表第%d個結點的值:",i++);
scanf("%d",&a);
p=(node*)malloc(sizeof(node));
p->info=a;
p->next=head->next;
head->next=p;
}
J. C語言 創建帶頭結點的鏈表
單鏈表的生成有2種方式:頭插法和尾插法。
1、頭插法
/*********************************************************************
* 函數名稱:linklist *CreateLinklistHead()
* 函數功能:利用頭插法創建鏈表
* 參 數:無
* 返 回 值:創建完鏈表後的鏈表頭結點
* 說 明:無
*********************************************************************/
extern linklist *CreateLinklistHead()
{
int x, i, nodeNum;
linklist *head, *temp; // 頭結點與臨時結點
head = (linklist *)malloc(sizeof(linklist)); // 生成表頭結點
head->next = NULL; // 給表頭結點的指針域賦值
printf("請輸入鏈表中結點的個數:");
scanf("%d", &nodeNum);
for(i=1; i<=nodeNum; i++)
{
printf("請輸入第 %d 個結點的數據:", i);
scanf("%d", &x);
temp = (linklist *)malloc(sizeof(linklist)); // 生成新的結點
temp->data = x; // 對新結點的數據域賦值
// 將新結點插到頭結點之後
temp->next = head->next;
head->next = temp;
}
return head; // 返回新建鏈表的頭結點
}2、尾插法
/*********************************************************************
* 函數名稱:linklist *CreateLinklistRear()
* 函數功能:利用尾插法創建鏈表
* 參 數:無
* 返 回 值:創建完鏈表後的鏈表頭結點
* 說 明:無
*********************************************************************/
extern linklist *CreateLinklistRear()
{
int x, i, nodeNum;
linklist *head, *rear, *temp; // 定義頭結點、尾結點和臨時結點
head = (linklist *)malloc(sizeof(linklist)); // 生成表頭結點,表頭結點不存放數據
head->next = NULL; // 將表頭結點的指針域賦值為NULL
rear = head; // 將表頭結點賦值給表尾結點
printf("請輸入鏈表中結點的個數:");
scanf("%d", &nodeNum);
for(i=1; i<=nodeNum; i++)
{
printf("請輸入第 %d 個結點的數據:", i);
scanf("%d", &x);
temp = (linklist *)malloc(sizeof(linklist)); // 生成新的結點
temp->data = x; // 新增結點的數據域
temp->next = NULL; // 新增結點的指針域(由於是尾插法,所以插入的結點都在尾部,即指針域為NULL)
rear->next = temp; // 使前一個結點指向新增結點(head->next=temp)
rear = temp; // 將新增結點賦值給尾結點(尾插法,插入的結點在尾部)(rear=head->next)
}
//rear->next = NULL; // 將尾結點的指針域賦值為空(為了方便檢驗鏈表是否為空鏈表)
return head; // 返回頭結點
}