㈠ 怎樣創建一個線性鏈表(c語言)
/*線性鏈表的構建*/
#include<stdio.h>
#include<stdlib.h>
typedefstructLnode
{
intdata;
structLnode*next;
}Lnode;
intmain()
{
Lnode*H,*p1,*p2,*p3,*p4;
H=(Lnode*)malloc(sizeof(Lnode));
p1=(Lnode*)malloc(sizeof(Lnode));
p2=(Lnode*)malloc(sizeof(Lnode));
p3=(Lnode*)malloc(sizeof(Lnode));
p4=(Lnode*)malloc(sizeof(Lnode));
p1->data=132;
p1->next=p2;
p2->data=942;
p2->next=p3;
p3->data=158;
p3->next=182;
p4->data=231;
p4->next=NULL;
printf("%d,%d ",p1->data,p3->data);
printf("%d",p1->next->data);
return0;
}
㈡ c語言中鏈表是如何創建的
時間關系不能詳細說,先要構建節點結構,這個結構包括前、後指針和數據變數,然後依次實例化一些節點,用前後指針連接起來
㈢ c語言創建鏈表
1、你使用了malloc函數但沒有導入頭文件malloc.h。
2、函數DATA *create(int n);沒有申明就直接調用。
(另外main函數中DATA* head;給個初值NULL,避免野指針。)
修改以上內容,親測可運行。
㈣ 怎麼建立一個多級鏈表,c語言
你可以建立一個鏈表節點的數據結構
typedefstructNode{
intdata;
structNode*ptr;
}Node;
然後在一個一個添加。你只需要記錄好頭節點。
Node*head=NULL;
我們插入第一個節點
Node*newnode=(Node*)malloc(sizeof(Node));
newnode->data=1;
newnode->ptr=NULL;
把這個節點加入到head或者其他節點下面
head=newnode
㈤ c語言創建單鏈表
#include<stdio.h>
#include<stdlib.h>
/*線性表*/
struct TLink {
int data;
struct TLink * next;
};/*end struct TLink*/
/*生成新元素*/
struct TLink * new_item(int number)
{
struct TLink * r = 0;
r = (struct TLink *)malloc(sizeof(struct TLink));
r->data = number;
r->next = 0;
return r;
}/*end new_item*/
/*在線性表中查詢數據*/
struct TLink * lookup(struct TLink * root, int number)
{
struct TLink * h = root;
while(h) {
if (h->data == number) return h;
h = h->next ;
}/*end lookup*/
return 0;
}
/*在線性表中追加一個數據*/
void append(struct TLink * * root, int number)
{
struct TLink * r = 0, * n = 0;
if (!root) return ;
/*不記錄重復元素*/
if (lookup(*root, number)) return;
/*如果表為空則新建表*/
r = *root;
if (!r) {
*root = new_item(number);
return ;
}/*end if*/
/*為保證為有序線性表,如果數據比表頭還小則作為表頭*/
if (number < r->data ) {
n = new_item(number);
n->next = r;
*root = n;
return ;
}/*end if*/
/*在有序線性表中查找位置插入元素*/
while(r) {
n = r->next ;
/*如果已經是表尾則直接追加*/
if (!n) {
n = new_item(number);
r->next = n;
return ;
}/*end if*/
/*在中央某處插入*/
if (number < n->data ) {
r->next = new_item(number);
r->next->next = n;
return ;
}/*end if*/
r = n;
}/*end while*/
}/*end append*/
/*列印有序線性表*/
void print(struct TLink * root)
{
struct TLink * r = root;
printf("【");
while(r) {
printf("%d ", r->data );
r = r->next ;
}/*end while*/
printf("\b】\n");
}/*end print*/
/*將有序線性表h1合並至有序線性表h0,並銷毀線性表h1*/
void merge(struct TLink ** h0, struct TLink ** h1)
{
struct TLink * h = 0, * k = 0;
if (!h0 || !h1) return ;
h = *h1;
while(h) {
append(h0, h->data );
k = h;
h = h->next ;
free(k);
}/*end h*/
h1 = 0;
}
int main(void)
{
int i = 0; struct TLink * x=0, *y = 0;
int a[] = {8,4,3,9,5,1};
int b[] = {7,2,1,5,6,0};
printf("原數據為:\n數組A:【");
for(i = 0; i < 6; i++) {
printf("%d ", a[i]);
append(&x, a[i]);
}/*next*/
printf("\b】\n數組B:【");
for(i = 0; i < 6; i++) {
printf("%d ", b[i]);
append(&y, b[i]);
}/*next*/
printf("\b】\n轉換為有序線性表\nA:");
print(x);
printf("B:");
print(y);
printf("AB合並後為:");
merge(&x, &y);
print(x);
return 0;
}
/*以上是順序線性表的合並程序,逆序只需將插入條件從小於改為大於即可。
合並結果如果要保留,把合並函數的lookup調用刪除即可*/
㈥ C語言空函數怎麼創建鏈表
頭指針是必須傳遞的,無論是你子函數返回值也好,子函數的參數是頭指針也好
㈦ c語言中怎麼根據文件建立一個鏈表
依次是編號
名字
數據是么?你需要先建立一個creat.txt文件,然後對文件進行操作~!
頭文件用#include<stdio.h>
#include<stdlib.h>這兩個,然後定義個文件指針
FILE
*fp;
用fopen("creat.txt","r")進行寫入,寫入用fscanf(fp,"%f%s%f",&id,&name,&grade);操作完成關閉文件fclose(fp);這樣就行了~!在鏈表裡插入這些東西就可以進行寫入了。。具體還是靠自己寫,要考試了,具體程序沒有時間給你寫。。
㈧ c語言創建一個鏈表
定義一個指針 pHead,該指針指向的類型是 struct Node 類型,給這個指針賦值NULL;
NULL其實就是0,相當於 struct Node *pHead = (struct Node *)0
㈨ C語言中怎樣建立鏈表
參考以前寫的這個吧,寫的不好,你修改吧
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define CD sizeof(struct Biao)
struct Biao
{
int num;
struct Biao *next;
};
int m,x;
int main()
{
struct Biao *jianli();
void paixu(struct Biao *n);
void chashu(struct Biao *n);
void shanshu(struct Biao *n);
void qiupingjun(struct Biao *n);
void tuichu();
int n;
struct Biao *t;
printf("1.建立鏈表\n2.排序\n3.插數\n4.刪數\n5.求平均值\n");
printf("請輸入選項:\n");
for(;;)
{
scanf("%d",&n);
switch(n)
{
case 1:t=jianli();break;
case 2:paixu(t);break;
case 3:chashu(t);break;
case 4:shanshu(t);break;
case 5:qiupingjun(t);break;
case 6:tuichu();break;
default:printf("輸入錯誤!請重新輸入\n");
}
}
}
struct Biao *jianli()
{
int i,j;
printf("建立鏈表,請輸入數據:\n");
struct Biao *head,*p1,*p2;
p1=p2=(struct Biao * )malloc(CD);//if(p1==NULL)建立鏈表失敗
for(i=0;i<=100;i++)
{
if(i==0)
{
head=p1;
p2->next=p1=(struct Biao * )malloc(CD);
p2=p1;
continue;
}
if(p1==NULL)
break;
else
{
scanf("%d",&p1->num);
if(p1->num==-1)
{
p2->num=NULL;
break;
}
p2->next=p1=(struct Biao * )malloc(CD);
p2=p1;
}
}
if(head->next->num==NULL)
printf("您建立了一個空鏈表\n");
else
{
printf("共有數據:%d\n",i-1);
m=i-1;
printf("輸出鏈表:\n");
p1=head->next;
for(j=0;j<i-1;j++)
{
printf("%d ",p1->num);
p1=p1->next;
}
}
printf("\n");
return(head);
}
void paixu(struct Biao *n)
{
int i,j,a,temp;
a=m;
struct Biao *p1,*p2,*tp;
p2=p1=n->next;
printf("從小到大排序結果:\n");
for(i=0;i<a-1;i++)
{
p1=p2;
tp=p1;
for(j=i+1;j<a;j++)
{
if((p1->next->num)<(tp->num))
{
tp=p1->next;
}
p1=p1->next;
}
temp=tp->num;tp->num=p2->num;p2->num=temp;
p2=p2->next;
}
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
}
void chashu(struct Biao *n)
{
int a,i,j;
struct Biao *p1,*p2,*tp;
m=m+1;
x=m;
a=m;
p1=n;
printf("請插入數字:\n");
p2=(struct Biao *)malloc(CD);
scanf("%d",&p2->num);
p1=n->next;
for(i=0;i<a-1;i++)
{
if(p1->num<=p2->num&&p1->next->num>p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
break;
}
if(p1->num<p2->num&&p1->next->num>p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
break;
}
if(n->next->num>p2->num)
{
tp=n->next;
n->next=p2;
p2->next=tp;
break;
}
p1=p1->next;
}
p1=n;//
for(i=0;i<a-1;i++)
{
p1=p1->next;
}
if(p1->num<=p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
}//演算法不簡便
printf("插入後的數據:\n");
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
printf("數據個數:%d\n",a);
}
void shanshu(struct Biao *n)
{
int a,i,j;
a=x;
struct Biao *p1,*p2;
printf("請輸入要刪除的數:\n");
scanf("%d",&j);
for(;;)
{
p1=n;
for(i=0;i<a;i++)
{
if(p1->next->num==j)
{
p2=p1->next;
p1->next=p1->next->next;
a-=1;
x-=1;
break;
}
p1=p1->next;
}
if(i==a)
break;
}
printf("結果:\n");
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
printf("剩餘數據個數:%d\n",x);
}
void qiupingjun(struct Biao *n)
{
int s,i;
struct Biao *p1;
s=0;
p1=n->next;
for(i=0;i<x;i++)
{
s+=p1->num;
p1=p1->next;
}
printf("平均值為:%f\n",s*1.0/x);
}
void tuichu()
{
exit(0);
}
㈩ 在c語言中如何創建一個鏈表
typedef struct Node
{
int data;
struct Node*pNext;
}Node;
Node*pNode=(Node*)malloc(sizeof(Node));