1.怎么建立C語言鏈表
#include
2.用C語言創建一個最簡單的鏈表
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存儲空間初始分配量 */
typedef int Status;/* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */
typedef int ElemType;/* ElemType類型根據實際情況而定,這里假設為int */
Status visit(ElemType c)
{
printf("%d ",c);
return OK;
}
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList; /* 定義LinkList */
/* 初始化順序線性表 */
Status InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node)); /* 產生頭結點,并使L指向此頭結點 */
if(!(*L)) /* 存儲分配失敗 */
return ERROR;
(*L)->next=NULL; /* 指針域為空 */
return OK;
}
3.C語言如何創建單鏈表
C語言創建單鏈表如下:
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
#include "iostream.h"
typedef struct node
{
int data;
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
{
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);
}
單鏈表創建方法:
單鏈表的建立有頭插法、尾插法兩種方法。
1. 頭插法
單鏈表是用戶不斷申請 存儲單元和改變鏈接關系而得到的一種特殊 數據結構,將鏈表的左邊稱為鏈頭,右邊稱為鏈尾。頭插法建單鏈表是將鏈表右端看成固定的,鏈表不斷向左延伸而得到的。頭插法最先得到的是尾結點。
由于鏈表的長度是隨機的,故用一個while循環來控制鏈表中結點個數。假設每個結點的值都大于O,則循環條件為輸入的值大于o。申請 存儲空間可使用malloc()函數實現,需設立一申請單元 指針,但malloc()函數得到的指針并不是指向 結構體的指針,需使用 強制類型轉換,將其轉換成結構體型指針。剛開始時,鏈表還沒建立,是一空鏈表,head 指針為NULL。
鏈表建立的過程是申請空間、得到數據、建立鏈接的循環處理過程。
2. 尾插法
若將鏈表的左端固定,鏈表不斷向右延伸,這種建立鏈表的方法稱為尾插法。尾插法建立鏈表時,頭 指針固定不動,故必須設立一個搜索指針,向鏈表右邊延伸,則整個算法中應設立三個鏈表指針,即頭指針head、搜索指針p2、申請單元指針pl。尾插法最先得到的是 頭結點。
4.C語言中怎樣建立鏈表
參考以前寫的這個吧,寫的不好,你修改吧#include
5.c語言關于創建鏈表的一段簡單代碼,請大家幫忙注釋一下
分段來解釋:
第一段.struct student
..
struct student a, b, c, *head, *p;
定義了一個結構體,結構的變量有 a,b,c, 結構體的指針變量有*head *p
第二段
*=99101;
.
*=85;
給a ,b ,c結構體變量的各成員賦值,未含.next的賦值
第三段
head=&a; 令head指向鏈表的首地址
*=&b; 令a結點指向b的首地址,完成a的尾與b的頭鏈接起來
*=&c; 令b結點指向c的首地址,完成b的尾與c的頭鏈接起來
*=NULL; 令c的結點等于0,出為輸出時,判斷鏈表結束的條件
第四段
p=head; 令p指向鏈表的頭
do
{
printf("%ld %5.1f\n",p->num,p->score); 執行輸出,先從*,*輸出
p=p->next; 將p再指向下一節點,即*的地址,
}
while(p!=NULL) ; 判斷*是否等于0,如果等于0,即鏈表到尾部了,退出循環,
}
指針p是為了輸出用的,利用了p指向了鏈表的首地址,再逐個打印,只到p=NULL,停止輸出
p一定要指向了鏈表時,才可以引用成員時使用 以下三種方式的最后兩種:
結構體變量名.成員名
(*指針變量).成員名
指針變量->;成員名
所以->;沒有特殊含義,只是固定的寫法,并且一般人員都用第三種
6.在c語言中如何創建一個鏈表
你現在的問題是不是不能創建鏈表,只能輸入一個數據。
我遇到過這種情況,高手應該知道是什么原因,但我不知道,只是了解除了什么問題
你用循環getchar(),一次都結束了,說明是在輸入一個的時候順便也把“回車”接收了。
所以循環停止了。
解決方法:你可以再循環體內多寫一個getchar(),讓這個去接收多余的'\n'
或者你用這個函數 fflush(stdin);清空輸入緩沖區。
你程序還有問題,你自己調吧
7.用C語言創建一個鏈表,怎么做
簡單舉個例子,參考下,大家共同學習,(*^__^*) 嘻嘻…… #include "stdio.h" main() { float peven(),podd(),dcall(); float sum; int n; while (1) { scanf("%d",&n); if(n>1) break; } if(n%2==0) { printf("Even="); sum=dcall(peven,n); } else { printf("Odd="); sum=dcall(podd,n); } printf("%f",sum); } float peven(int n) { float s; int i; s=1; for(i=2;i。
8.c語言構建一個最簡單的單鏈表
typedef struct node { char name[20]; struct node *link; }stud; 下面就來看一個建立帶表頭(若未說明,以下所指 鏈表 均帶表頭)的單 鏈表 的完整程序。
#include #include /*包含動態內存分配函數的頭文件*/ #define N 10 /*N為人數*/ typedef struct node { char name[20]; struct node *link; }stud; stud * creat(int n) /*建立單 鏈表 的函數,形參n為人數*/ { stud *p,*h,*s; /* *h保存表頭結點的指針,*p指向當前結點的前一個結點,*s指向當前結點*/ int i; /*計數器*/ if((h=(stud *)malloc(sizeof(stud)))==NULL) /*分配空間并檢測*/ { printf("不能分配內存空間!"); exit(0); } h->name[0]='\0'; /*把表頭結點的數據域置空*/ h->link=NULL; /*把表頭結點的鏈域置空*/ p=h; /*p指向表頭結點*/ for(i=0;ilink=s; /*把s的地址賦給p所指向的結點的鏈域,這樣就把p和s所指向的結點連接起來了*/ printf("請輸入第%d個人的姓名",i+1); scanf("%s",s->name); /*在當前結點s的數據域中存儲姓名*/ s->link=NULL; p=s; } return(h); } main() { int number; /*保存人數的變量*/ stud *head; /*head是保存單 鏈表 的表頭結點地址的指針*/ number=N; head=creat(number); /*把所新建的單 鏈表 表頭地址賦給head*/ } 這樣就寫好了一個可以建立包含N個人姓名的單 鏈表 了。寫動態內存分配的程序應注意,請盡量對分配是否成功進行檢測。
9.c語言創建一個簡單的線性鏈表
你好,這個是我以前寫的,你可以借鑒一下#include
10.(急啊
我調試了很久,成功了,雖然還是不怎么明白,鏈表真是一個奇妙的東西#include
轉載請注明出處華閱文章網 » 簡短說明c語言如何創建鏈表鏈表