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

c語言中linklist

發布時間: 2022-01-21 18:08:18

c語言中的linklist是什麼

typedef struct node{ //結點類型定義
DataType data; //結點的數據域
struct node *next;//結點的指針域
}ListNode;
typedef ListNode *LinkList;

❷ C語言問題,這里的linklist前面加的*有什麼用啊

Linklist前面加的*,意思就是Linklist是指向 struct node 類型的結構體的指針,指向一種結構體類型。
Linklist head,p,q;
也是初始化head,p,q為指向這種類型結構體的指針,但是具體指向哪一個結構體還沒有分配。

望採納

❸ 關於 C語言鏈表(linklist)

好象不是循環鏈表吧.....
pf=pb//這句是看你是否真正懂了整個創建過程,pb是指像當前最新創建的結點,而pf則指向上一個結點 每次從開始循環 pb指向新創建的結點 之後利用pf->next=pb來掛結點 而最後 pf指向pb 准備迎接下一個結點 當下一個結點來時
pb又指向新的結點 而pf 指向剛剛創建的結點 利用 pf->next=pb把pb掛在pf後面

pb->next=null 是在把新的結點的next域指定為空 也是一個初始化

malloc 是申請一塊內存空間來給新的結點 如果不去申請的話 新的結點放哪? 我們創建的東西都是憑空想像的 但是最後都要寫到計算機裡面 分配一塊內存空間大概就是這個意思

❹ 標准C語言中有LinkList *&L這種用法嗎(指針的引用) 誰能告訴我下面的程序是用什麼語言寫的

標准C沒有引用這一用法。
上述代碼是用C++語言寫的,文件擴展名是.cpp或者.cxx等。
因為C++是C的擴展,所以C中已有的頭文件等都可以一樣使用。

❺ C語言如何組合如下幾個文件linklist.h,linklist.c,linlistMain.c,為什麼程序老報錯

首先你要弄清楚頭文件.h的作用,頭文件是為調用者提供函數調用時使用的數據結構定義以及函數原型的,頭文件中只應該有數據結構、宏定義、函數原型,不應該包括函數實現。所以initialize這個函數的實現應該放到對應的.c文件中,否則多個源文件引用這個頭文件後將導致連接器進行連接時發現initialize函數定義重復。
linkedlist.h內容應該為如下表述
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#define SUCCESS 0 //宏定義
#define FAIL 1 //宏定義
#include <stdio.h>
#include <malloc.h>
//數據結構定義
typedef struct node
{
int elem;
struct node * p;
}node,*linklist;

//頭插法建立單鏈表函數原型
void createFromHead(linklist l);
//尾插法建立單鏈表函數原型
void createFromEnd(linklist l);
#endif //注意預處理語句不能使用分號結束

linkedlist.c提供具體的函數實現,這里又涉及到#ifndef XXX_H #define XXX_H #endif預處理語句的功能,這部分語句起到哨兵監察的作用,防止頭文件被重復包含造成數據結構和函數定義重復,翻譯成自然語言就是如果沒有定義XXX_H,就定義XXX_H這個符號。如果你已經include了XXX_H,則編譯器會發現XXX_H這個符號已經被定義了,所以#ifndef XXX_H和成對的#endif之間的語句就不會再被處理了。你的鏈表實現文件中只引用了一個linkedlist.h所以上述警戒預處理指令沒有必要存在,實現文件如下
#include "linkedlist.h"

//鏈表初始化
int initialize(linklist *l)
{
*l = (linklist)malloc(sizeof(node));
(*l)->p =NULL;
return 0;
}

void createFromHead(linklist l)
{
node *s;
char c;
int flag=1;
while (flag)
{
c=getchar();
if ('$'!=c)
{
s =(node*)malloc(sizeof(node));
s->elem=c;
s->p = l->p;
l->p = s;
}else
flag = 0;
}
}
// createFromEnd這個函數將來實現也要放在這個.c文件中

你的main函數不用修改
在linux環境下編譯程序時使用gcc -Wall -o testlinkedlist linkedlist.c linkedlistMain.c
生成的可執行程序名字叫testlinkedlist

❻ C語言 void Create_LinkList(LinkList &L) { }

我個人覺得兩種都是可以的, 只是後面的處理的時候不一樣而已
void Create_LinkList(LinkList &L) {}這種是在被調函數之前, 即使只定義而不初始化(也就是分配內存地址)LinkList變數, 進去後再進行初始化也是可以的, 到時候在外面使用那個變數的時候照樣能用,但是要注意這個時候必須要在被調函數中進行內存的分配等;
void Create_LinkList(LinkList L) {}這種的話, 你肯定是在外面已經分配了最開始節點的地址了, 地址被傳進去後根據這個地址更改下一個指向並掛載後面的節點

以前也遇見過這個問題, 當時迷糊了一段時間, 後來就自己保留了個小日誌。 寫得亂了點
不嫌棄的話, 可以進去看看
URL:

希望能夠幫到你, 當然也希望沒有誤導你, 嘿嘿

❼ c語言中的linked list

//list 頭文件
#include <stdlib.h>
#include <string.h>
#define NEW (struct node *)malloc(sizeof(struct node))

struct node
{
char name[20];
char tel[9];
struct node *next;
};

/* 創建 linked list */

struct node *create()
{
static struct node *h;
struct node *p,*q;
char name[20];
h = NULL;
printf("name : ");
gets(name);
while(0 != strlen(name))
{
p = NEW;
if(NULL == p)
{
printf("allocation failure \n");
exit(0);
}
strcpy(p->name,name);
printf("tel : ");
gets(p->tel);
p->next = NULL;
if(NULL == h)
h = p;
else
q->next = p;
q = p;
printf("name: ");
gets(name);
}
return h;
}

/* 遍歷linked list */

void printlist(struct node *head)
{
struct node *p;
p = head;
while(NULL != p)
{
printf("%s\t%s\n",p->name,p->tel);
p = p->next;

}

}

/* 刪除節點 */

struct node *delnode(struct node *head, char *x)
{
struct node *p,*q;
static struct node *h;
if(NULL == head)
{
printf("this is a empty linked list");
return head;
}
p = head;
while(0 != strcmp(x,p->name) && NULL != p->next)
{
q = p;
p = p->next;
}
if(0 == strcmp(x,p->name))
{
if( p == head)
head = p->next;
else
q->next = p->next;
free(p);
}
else
printf("can't find your node");
h = head;
return h;
}

//測試

❽ C語言 linked list

next=next->link;這句應該是頭結點向後移動吧,這里link是指向像個節點?

previous>next,這個對比是什麼意思?不應該對比節點中的數據大小么?

❾ C語言linklist &l 和linklist l的區別

LinkList&L
是引用傳遞
可以起到修改鏈表的效果
LinkList
L
是值傳遞
傳的是L的一個副本
對副本操作後無法起到修改鏈表的效果

❿ c語言中的linkedlist問題

你還是把整個文件貼出來,或者發到郵箱里吧
[email protected]
一來可以直接看到代碼的問題,二來調試也方便一些。
我猜測是循環處理有問題,導致反復出現同一數字,只是猜測,具體還是希望能看到完整代碼,或者能跑起來的部分代碼。