㈠ c語言線性表
不帶頭結點, 那麼鏈表為空就是第一個節點就是空。 也就是L==NULL.
選A。
PS :
B是帶頭結點鏈表為空的判斷條件。
C是帶頭結點循環鏈表為空的判斷條件。
D是不帶頭結點鏈表非空的條件。
㈡ C語言中怎麼定義個線性表
1、定義結構體類型,這里需要利用指針和結構體,其中m和n分別表示矩陣的行和列。
㈢ C語言 線性表和鏈表有什麼區別
線性表是最基本、最簡單、也是最常用的一種數據結構。線性表中數據元素之間的關系是一對一的關系,即除了第一個和最後一個數據元素之外,其它數據元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種數據結構在實際應用中是廣泛採用的一種數據結構。
順序表是在計算機內存中以數組的形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。線性表採用順序存儲的方式存儲就稱之為順序表。順序表是將表中的結點依次存放在計算機內存中一組地址連續的存儲單元中。
鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。 相比於線性表順序結構,鏈表比較方便插入和刪除操作。
㈣ c語言線性表
for(int *p = *(l->elem[l->length- 1]);p >= q; --p)
在for語句里,p被聲明指針,但是你賦的值*(l->elem[l->length- 1])並不是指針
猜測你的意思,應該改為:
for(int *p = &(l->elem[l->length- 1]);p >= q; --p)
㈤ 關於c語言線性表
是不是b的表尾標志需要去掉,才能正確表達ab合並到一起了。比如ab是字元串的話,都有標志\n.合並成一個了當然要去掉一個表尾了。
㈥ C語言——線性表
#include"stdio.h"
#include<malloc.h>
typedef char ElemType;
typedef struct LNode
{ElemType data;
struct LNode *next;
}LinkList;
void CreatListF(LinkList *&L,ElemType a[],int n) //頭插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}
void CreateListR(LinkList *&L,ElemType a[],int n) //尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void InitList(LinkList *&L) //初始化線性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void DestroyList(LinkList *&L) //銷毀線性表
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList *L) //判斷線性表是否為空
{
return(L->next==NULL);
}
int ListLength(LinkList *L) //求線性表的長度
{
LinkList *p=L;int n=0;
while(p->next!=NULL)
{
n++;p=p->next;
}
return(n);
}
void DispList(LinkList *L) //輸出線性表
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}
int GetElem(LinkList *L,int i,ElemType &e) //求線性表中某個數據元素值
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
e=p->data;return 1;
}
}
int LocateElem(LinkList *L,ElemType e) //按元素值查找
{
LinkList *p=L->next;
int i=1;
while(p!=NULL&&p->data!=e)
{
p=p->next;i++;
}
if(p==NULL)return(0);
else return(i);
}
int ListInsert(LinkList *&L,int i,ElemType e) //插入數據元素
{
int j=0;
LinkList *p=L,*s;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e; s->next=p->next; p->next=s;
return 1;
}
}
int ListDelete(LinkList *&L,int i,ElemType &e) //刪除數據元素
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
q=p->next;
if(q==NULL)return 0;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
}
int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;
InitList(h); //初始化順序表h
CreateListR(h,&a[0],5); //依次採用尾插入法插入a,b,c,d,e元素
printf("單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
printf("該單鏈表的長度為:");
printf("%d",ListLength(h)); printf("\n"); //輸出順序表h的長度
if(ListEmpty(h)) printf("該單鏈表為空。\n");
else printf("該單鏈表不為空。\n"); //判斷順序表h是否為空
GetElem(h,3,e);printf("該單鏈表的第3個元素為:");
printf("%c",e); printf("\n"); //輸出順序表h的第3個元素
printf("該單鏈表中a的位置為:");
printf("%d",LocateElem(h,'a')); printf("\n"); //輸出元素'a'的位置
ListInsert(h,4,'f'); //在第4個元素位置插入'f'素
printf("在第4 個元素位置上插入'f'後單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
ListDelete(h,3,e); //刪除L的第3個元素
printf("刪除第3個元素後單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
DestroyList(h); //釋放順序表h
return 0;
}
㈦ 怎樣在C語言創建線性表
#include"stdio.h"
#include<malloc.h>
typedef char ElemType;
typedef struct LNode
{ElemType data;
struct LNode *next;
}LinkList;
void CreatListF(LinkList *&L,ElemType a[],int n) //頭插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}
void CreateListR(LinkList *&L,ElemType a[],int n) //尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void InitList(LinkList *&L) //初始化線性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void DestroyList(LinkList *&L) //銷毀線性表
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList *L) //判斷線性表是否為空
{
return(L->next==NULL);
}
int ListLength(LinkList *L) //求線性表的長度
{
LinkList *p=L;int n=0;
while(p->next!=NULL)
{
n++;p=p->next;
}
return(n);
}
void DispList(LinkList *L) //輸出線性表
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}
int GetElem(LinkList *L,int i,ElemType &e) //求線性表中某個數據元素值
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
e=p->data;return 1;
}
}
int LocateElem(LinkList *L,ElemType e) //按元素值查找
{
LinkList *p=L->next;
int i=1;
while(p!=NULL&&p->data!=e)
{
p=p->next;i++;
}
if(p==NULL)return(0);
else return(i);
}
int ListInsert(LinkList *&L,int i,ElemType e) //插入數據元素
{
int j=0;
LinkList *p=L,*s;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e; s->next=p->next; p->next=s;
return 1;
}
}
int ListDelete(LinkList *&L,int i,ElemType &e) //刪除數據元素
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
q=p->next;
if(q==NULL)return 0;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
}
int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;
InitList(h); //初始化順序表h
CreateListR(h,&a[0],5); //依次採用尾插入法插入a,b,c,d,e元素
printf("單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
printf("該單鏈表的長度為:");
printf("%d",ListLength(h)); printf("\n"); //輸出順序表h的長度
if(ListEmpty(h)) printf("該單鏈表為空。\n");
else printf("該單鏈表不為空。\n"); //判斷順序表h是否為空
GetElem(h,3,e);printf("該單鏈表的第3個元素為:");
printf("%c",e); printf("\n"); //輸出順序表h的第3個元素
printf("該單鏈表中a的位置為:");
printf("%d",LocateElem(h,'a')); printf("\n"); //輸出元素'a'的位置
ListInsert(h,4,'f'); //在第4個元素位置插入'f'素
printf("在第4 個元素位置上插入'f'後單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
ListDelete(h,3,e); //刪除L的第3個元素
printf("刪除第3個元素後單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
DestroyList(h); //釋放順序表h
return 0;
}
㈧ 在C語言中線性表怎麼定義
線性表有兩種,不知你要求那種
typedef
struct
{
elemtype*
elem;
int
length;
int
listsize;
}
sqlist;//順序表,這個與數組的區別不用我說了吧
void
initlist_sq
(sqlist&
l)
{
l.elem=new
elemtype
[list_init_size];
l.length=0;
l.listsize=list_init_size;
}//初始化順序表
然後sqlist
la;
initlist_sq(la);
就可以
typedef
struct
lnode{
int
data;
struct
lnode
*next;
}lnode,*linklist;//線性鏈表
//單鏈表可以有效的利用主存的碎片,它的數據域不是連續的
㈨ C語言的線性表問題
簡單調了一下,線性表從第1個元素開始存儲數據。
#define MAXSIZE 10000
typedef struct {
int data[MAXSIZE];
int last;
} SeqList;
SeqList* init_SeqList()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
if (L)
{
L->last = -1;
return L;
}
else
return 0;
}
void CreateList(SeqList& L)
{
int i;
printf("請輸入你想要的順序表的長度 ");
scanf("%d", &L.last);
printf("請輸入一組整型元素,每個元素之間請用空格隔開(不超過20) ");
for (i = 1; i <= L.last; i++)
{
scanf("%d", &L.data[i]);
}
}
void TraverseList(SeqList& L)
{
int i;
printf("展示順序表中的整形元素 ");
for (i = 1; i <= L.last; i++)
printf("%d ", L.data[i]);
printf(" ");
}
void LocateList(SeqList& L, int x)
{
int i;
int a = -1;
for (i = 1; i <= L.last; i++)
if (L.data[i] == x) {
a = i;
printf("你要查找的元素在第%d位 ", a);
}
if (a == -1) {
printf("false ");
}
}
void InsertList(SeqList& L, int i, int x)
{
int a;
if (L.last == MAXSIZE) {
printf("順序線性表已經滿了");
return;
}
if (i<1 || i>L.last) {
printf("你插入的元素不在范圍內");
return;
}
if (i <= L.last)
{
for (a = L.last; a >= i; a--) {
L.data[a + 1] = L.data[a];
}
L.data[i] = x;
L.last++;
}
}
void DeleteList(SeqList& L, int i)
{
int a;
if (L.last == 0) {
printf("false");
return;
}
if (i<1 || i>L.last) {
printf("false");
return;
}
if (i <= L.last)
{
for (a = i; a < L.last; a++)
L.data[a] = L.data[a+1];
}
L.last--;
}
int main() {
SeqList L;
int x, i, choice;
printf("請輸入1-5在以下菜單中選擇你需要的操作(第一次選擇必須選擇1) ");
printf("1、建立一個順序表 ");
printf("2、對該順序表進行遍歷 ");
printf("3、在順序表中查找某一元素 ");
printf("4、在順序表i位置中插入元素x ");
printf("5、在順序表i位置中刪除元素x ");
while (1)
{
printf("請選擇你需要的操作: ");
scanf("%d", &choice);
switch (choice)
{
case 1:CreateList(L); break;
case 2:TraverseList(L); break;
case 3:printf("請輸入你要查找的元素 ");
scanf("%d", &x);
LocateList(L, x); break;
case 4:printf("請輸入你要插入的位置i ");
scanf("%d", &i);
printf("請輸入你要插入的元素x ");
scanf("%d", &x);
InsertList(L, i, x);
printf("插入成功 "); break;
case 5:printf("請輸入你要刪除的元素的位置i ");
scanf("%d", &i);
DeleteList(L, i);
printf("刪除成功 "); break;
}
}
return 0;
}
㈩ c語言中的線性表是指什麼啊
線性就是數據是一維的意思而已。線性表一般分靜態和動態兩種,靜態的就是數組,動態的就是單鏈表而已。