c語言實(shí)現(xiàn)順序表的基本操作
更新時(shí)間:2014年03月30日 09:07:17 作者:
這篇文章主要介紹了c語言實(shí)現(xiàn)順序表的基本操作,需要的朋友可以參考下
數(shù)據(jù)結(jié)構(gòu)順序表操作
復(fù)制代碼 代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LIST_INIT_SIZE 100
#define LISINCREMENT 10
#define ElemType int
#define Status int
typedef struct Sq{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList(SqList *L)
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)
return 0;
L->length=0;
L->listsize=LIST_INIT_SIZE;
return 1;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
int *q,*p;
if(i<1||i>L->length)
return 0;
if(L->length>L->listsize)
{
ElemType *newbase=(ElemType*)realloc(L->elem,(LIST_INIT_SIZE+LISINCREMENT)*sizeof(ElemType));
if(!newbase)
return 0;
L->elem=newbase;
L->listsize+=(LISINCREMENT);
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return 1;
}
Status ListDelete(SqList *L,int i,ElemType e)
{
int *p,*q;
if(i<1||i>L->length)
return 0;
p=&(L->elem[i-1]);
e=*p;
q=L->elem+L->length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L->length;
return 1;
}
int main(void)
{
int i,j,e,lo,temp;
SqList *L=(SqList*)malloc(sizeof(SqList));
InitList(L);
printf("請輸順序表的長度:\n");
scanf("%d",&L->length);
printf("請輸入順序表的各個元素:\n");
for(i=0;i<L->length;++i)
scanf("%d",&L->elem[i]);
printf("輸入的順序表是:\n");
for (i=0;i<L->length;++i)
{
printf("%d ",L->elem[i]);
}
printf("\n");
printf("請輸入插入的位置以及節(jié)點(diǎn):\n");
scanf("%d%d",&j,&e);
ListInsert(L,j,e);
printf("插入后的順序表為:\n");
for (i=0;i<L->length;++i)
{
printf("%d ",L->elem[i]);
}
printf("\n");
printf("請輸入要刪除的位置:");
scanf("%d",&lo);
ListDelete(L,lo,temp);
for (i=0;i<L->length;++i)
{
printf("%d ",L->elem[i]);
}
printf("\n");
free(L);
return 0;
}
相關(guān)文章
opencv3/C++ 實(shí)現(xiàn)SURF特征檢測
今天小編就為大家分享一篇opencv3/C++ 實(shí)現(xiàn)SURF特征檢測,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
你真的理解C語言qsort函數(shù)嗎?帶你深度剖析qsort函數(shù)
這篇文章主要介紹了你真的理解C語言qsort函數(shù)嗎?帶你深度剖析qsort函數(shù),本篇將引入一個庫函數(shù)來實(shí)現(xiàn)我們希望的順序,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
關(guān)于Qt?C++中connect的幾種寫法代碼示例
這篇文章介紹了Qt中connect函數(shù)的不同編寫方式,包括傳統(tǒng)的槽函數(shù)寫法、使用函數(shù)指針的寫法、Lambda表達(dá)式以及使用QOverload選擇重載信號的寫法,每種寫法都有其特點(diǎn)和適用場景,程序員應(yīng)根據(jù)具體需求選擇最合適的方式,需要的朋友可以參考下2024-11-11
C/C++ Qt 基本文件讀寫的基本使用(2種實(shí)現(xiàn))
文件的讀寫是很多應(yīng)用程序具有的功能,本文主要介紹了兩種實(shí)現(xiàn)方法,第一種使用QFile類的IODevice讀寫功能直接讀寫,第二種是利用 QFile和QTextStream結(jié)合起來,用流的方式進(jìn)行文件讀寫2021-11-11
利用C語言將點(diǎn)分十進(jìn)制的IP字符串轉(zhuǎn)成4個整數(shù)
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)將點(diǎn)分十進(jìn)制的IP字符串轉(zhuǎn)成4個整數(shù),文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
C++11?nullptr實(shí)現(xiàn)初始化空指針
避免產(chǎn)生“野指針”最有效的方法,就是在定義指針的同時(shí)完成初始化操作,本文主要介紹了C++11?nullptr初始化空指針,感興趣的可以了解一下2022-01-01

