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

新建線性表C語言

發布時間: 2022-07-28 20:56:53

『壹』 c語言創建一個線性表,然後輸出線性表

#include <stdio.h>
#include <stdlib.h>

typedef struct _NodeList
{
int m_data;
_NodeList* m_next;
}NodeList;

NodeList * createList()
{
NodeList *head,*temp,*tail;
head=tail=NULL;
for (int i = 0; i < 10; i++)
{
temp=(NodeList *)malloc(sizeof(NodeList));
scanf("%d",&temp->m_data);
temp->m_next = NULL;
if(head==NULL)
{
head = tail = temp;
}
else
{
tail->m_next = temp;
tail = temp;
}
}
return head;
}

void printList(NodeList *list)
{
NodeList * tmp = list;
printf("The list is :\n");
while (tmp->m_next != NULL)
{
printf("%d--",tmp->m_data);
tmp = tmp->m_next;
}
printf("%d\n",tmp->m_data);
}

int main()
{
printf("Please input 10 numbers:\n");

/* create list */
NodeList * list = createList();

/* print list */
printList(list);

return 0;
}

『貳』 C語言創建一個線性表,然後輸出線性表,如何編寫程序

#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>

#defineOVERFLOW -2
#define OK 1
#define ERROR 0
#defineLIST_INIT_SIZE 100
#defineLISTINCREMENT 10

typedef intElemType;
typedef intStatus;
//定義順序存儲結構
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
//初始化順序表
StatusInitList_Sq(SqList &L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem ) exit(ERROR);
L.length =0;
L.listsize =LIST_INIT_SIZE;
return OK;
}
//自定義創建順序表
voidCreate_SqList(SqList &L)
{
int c,i=0;
int *newBase;
printf("請輸入順序表元素:\n");
while((scanf("%d",&c))!=EOF)
{
if(i>=L.listsize) //自定義順序表大小超過初始化大小
{
newBase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
//為初始順序表以LISTINCREMENT大小重新增加存儲空間
if(!newBase)exit(OVERFLOW);
L.elem=newBase;
L.listsize+=LISTINCREMENT;
}
L.elem[i++]=c;
}
L.length=i;
printf("輸入的順序表元素:\n");
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
//在指定位置插入元素
StatusListInsert(SqList &L,int i,ElemType e)
{
ElemType *p,*q,*newbase;
if(i<1||i>L.length+1)
{
printf("插入位置錯誤\n");
return(ERROR);
}
if(L.length>=L.listsize)
{
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
if(i==L.length) L.elem[i+1]=e;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
//在指定位置刪除元素
StatusListDelete_Sq(SqList &L,int i,ElemType *e)
{
ElemType *p,*q;
if(i<1||i>L.length+1)
return ERROR;
p=&(L.elem[i-1]);
*e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length ;
return OK;
}

void main()
{
SqList L;
int m,n;
int location,element;
if(!InitList_Sq(L))
{
printf("初始化順序表失敗!\n");
exit(ERROR);
}
Create_SqList(L);
for(m=0;m<3;m++)
{
printf("輸入插入位置:");
scanf("%d",&location);
while(location>L.length+1||location<1)
{
printf("輸入位置錯誤,請重新輸入!\n");
scanf("%d",&location);
}
printf("插入元素:");
scanf("%d",&element);
if(!ListInsert(L,location,element))
{
printf("順序表插入失敗!\n");
exit(ERROR);
}
printf("插入順序表為:\n");
for(int i=0;i<=L.length -1;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n新順序表一共有%d個元素。\n",L.length);
}
for(n=0;n<3;n++)
{
printf("輸入刪除位置:");
scanf("%d",&location);
while(location>L.length||location<1)
{
printf("輸入位置錯誤,請重新輸入!\n");
scanf("%d",&location);
}
if(!ListDelete_Sq(L,location,&element))
{
printf("刪除錯誤!\n");
exit(ERROR);
}
printf("被刪除的元素為:%d \n",element);

printf("被刪除後的順序表為:\n");
for(int j=0;j<=L.length-1;j++)
{
printf("%d ",L.elem[j]);
}
printf("\n新順序表一共有%d個元素。\n",L.length);
}
}
這個是我最近編寫的 順序表也是線性表的
這里還有鏈表的程序 用的話再傳給你

『叄』 用C語言怎麼建立線性鏈表

線性鏈表是一種數據結構。
使用指針在線性表的各個節點進行連接。
struct
NODE
{
int
value;
NODE*
next;
}
這種結構就是一種線性表的數據結構咯,你使用next指針指向下一個節點。

『肆』 C語言中怎麼定義個線性表

1、定義結構體類型,這里需要利用指針和結構體,其中m和n分別表示矩陣的行和列。

『伍』 c語言中創建線性表問題

因為你的p沒有初始化,printf 裡面d與,後面的&。。不匹配
#include<stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100 //線性表存儲空間的初始分配量
#define LISTINCREMENT 10 //線性表存儲空間的分配量
typedef int ElemType[LIST_INIT_SIZE];
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
typedef int Status;
int InitList_Sq(SqList L)
{
//構造一個空的線性表L。
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem){return 0;}
L.length=0;
printf("%d\n",L.length);
L.listsize=LIST_INIT_SIZE;
return 1;
}
int main()
{
int t=0;
SqList p={};
InitList_Sq(p);
printf("%d\n",p.length);
return 0;

『陸』 C語言如何創建線性表中的順序表

//假設元素是int
structseqList
{
intarray*
intsize;
seqList(intarraySize)
{
int*array=newint[arraySize];
size=arraySize;
}

~SeqList()
{
delete[]array;
}

intGetSize()const{returnsize;}
int*GetArray(){returnarray;}
voidSetValue(intindex,intvalue)
{
if(index>=size)
return;

array[index]=value;
}
}
//測試代碼

voidmain()
{
seqListmyArray(5);
myArray.SetValue(0,1);
myArray.SetValue(1,100);
myArray.SetValue(2,1000);
myArray.SetValue(3,10000);
myArray.SetValue(4,100000);
int*array=myArray.GetArray();
intsize=myArray.GetSize();
for(inti=0;i<size;i++)
{
printf("%d ",array[i]);
}
}

輸出結果是1,100,1000,10000,100000

『柒』 怎樣創建一個線性鏈表(C語言)

可以用頭插法或尾插法
(下面用尾插法)
思想為:讓你輸入一串字元串,
為每個字元創建一個節點,添加到鏈表的後面.直到輸入的字元為@為止.
#include
<stdio.h>
#include
<malloc.h>
typedef
char
datatype;
typedef
struct
node
{
datatype
data;
struct
node
*next;
}linklist;
linklist
*p,*q,*head;
main()
{
char
c;
head
=
(linklist
*)malloc(sizeof(linklist));
head->next
=
NULL;
p
=
head;
c
=
getchar();
while(c
!=
'@')
{
q
=
(linklist
*)malloc(sizeof(linklist));
q->data
=
c;
q->next
=
NULL;
p->next
=
q;
p
=
p->next;
c
=
getchar();
}
}
可以在
main()
最後加上
for(p=head->next;
p!=NULL;
p=p->next)
{
printf("%5c",
p->data);
}
來測試結果,本人已經TC
2.0下面測試通過.

『捌』 怎樣創建線性表(C語言)

線性表是個抽象的概念,沒辦法直接創建抽象類型,需要具體的類型(比如數組,鏈表)。
比如創建數組:int array[100];
創建一個GList鏈表: GList * list = NULL; (空的)

『玖』 怎樣在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;
}