c語言編程文件中刪除數據結構,C語言數據結構實戰(一)順序表的插入與刪除

今天學習了思成老師的數據結構實戰教程 寫了一個順序表 插入和刪除的操作 把源碼共享給大家 一共包括list.c stu.h main.c list.h ? .h文件是頭文件 需要引入 具體的功能我都已經在代碼中寫明了

list.h代碼如下:

//線性表的定義在頭文件中實現

#ifndef _LIST_H

#define _LIST_H

#define _LIST_INIT_SIZE 10

#define _LIST_INCREME 10

typedef struct

{

ElemType * elem;//首地址

int length;

int size;

}LIST;

LIST *InitList();

void FreeList(LIST *l);

int InsertList(LIST *l,int i,ElemType *e);

int DeleteList(LIST *l,int i);

#endif

list.c代碼如下

#include

#include

#include "stu.h"

#include "list.h"

//線性表的初始化,此時數據存儲的大小的內存還未開辟 開辟的是list.h的大小

LIST *InitList()

{

LIST *l=(LIST *)malloc(sizeof(LIST));

//判斷開辟是否成功

if(l==NULL)

exit(0);

//開辟存儲數據的內存的區域

l->elem=(ElemType *)malloc(_LIST_INIT_SIZE *sizeof(ElemType));

//如果開辟成功的話就釋放掉內存

if(l->elem==NULL)

{

free(l);

exit(0);

}

//有效長度賦初值為0

l->length=0;

l->size=_LIST_INIT_SIZE;

return l;

}

//釋放對區內存的函數

void FreeList(LIST *l)

{

//要先釋放成員的空間

free(l->elem);

free(l);

}

//第一個參數要傳得是插入哪一個線性表中去 i指位置

int InsertList(LIST *l,int i,ElemType *e)

{

//定義一些指針 指向相應的位置

ElemType *p=NULL,*q=NULL,*newElem=NULL;

if(l==NULL || e==NULL)

return 0;

//i指的是第幾個位置 不是下標

if(i<1||i>l->length+1)

return 0;

//if有效長度大于最大的長度的時候 重新開辟一塊內存

if(l->length>=l->size)

{

newElem=realloc(l->elem,(l->size+_LIST_INCREME)*sizeof(ElemType));

if(newElem==NULL)

return 0;

l->elem=newElem;

l->size+=_LIST_INCREME;

}

//q指向插入的位置 i-1代表下標

q=&l->elem[i-1];

//指向最后一個有效的數據元素

for(p=&(l->elem[l->length-1]);p>=q;p--)

*(p+1)=*p;

*q=*e;

++l->length;

return 1;

}

int DeleteList(LIST *l,int i)

{

ElemType *p=NULL,*q=NULL;

if(l=NULL)

return 0;

if(i<1|| i>l->length)

return 0;

p=&l->elem[i-1];

q=&l->elem[l->length-1];

for(;p

*p=*(p+1);

--l->length;

return 1;

}

stu.h代碼如下

#ifndef _STU_H

#define _STU_H

//定義一個學生的結構體

typedef struct

{

char sno[4];

char name[21];

char sex[3];

int score;

}ElemType;

#endif

main.c代碼如下

#include

#include "stu.h"

#include "list.h"

ElemType stu[3]={

{"S101","張三","男",80},

{"S102","小紅","女",75},

{"S103","王五","男",90},

};

void main()

{

int i;

LIST *list=NULL;

//通過函數初始化空間

list=InitList();

for(i=0;i<3;i++)

InsertList(list,1,&stu[i]);

DeleteList(list,2);

FreeList(list);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373123.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373123.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373123.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內存使用分析工具Valgrind簡單用法

轉載自 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html 暫時還未使用過&#xff0c;記錄下&#xff0c;記錄下&#xff0c;記錄下 Valgrind的主要作者Julian Seward剛獲得了今年的Google-OReilly開源大獎之一──Best Tool Maker。讓我們一起來看一下他的作品…

Lucene概述第一部分:創建索引

介紹 我最近一直在與開源搜索引擎Lucene合作 。 我不是專家&#xff0c;但是由于我只是瀏覽了一些相當稀疏的文檔并將應用程序從Lucene的很舊的版本遷移到了最新版本的2.4&#xff0c;所以我在總體上很清楚。 Lucene的文檔有點讓人難以想象&#xff0c;因此我想趁此機會在我腦海…

初識openstack

一、 什么是openstack&#xff1f; OpenStack是一個由NASA&#xff08;美國國家航空航天局&#xff09;和Rackspace合作研發并發起的&#xff0c;以Apache許可證授權的自由軟件和開放源代碼項目。 二、openstack前世今身 openstack是一個跟Eucalyptus,AWS(Amazon web Service)類…

c語言case多語句的取值,Switch Case語句中多個值匹配同一個代碼塊的寫法

C&num;&plus;JQuery&plus;&period;Ashx&plus;百度Echarts實現全國省市地圖和餅狀圖動態數據圖形報表的統計在目前的一個項目中,需要用到報表表現數據,這些數據有多個維度,需要同時表現出來,同時可能會有大量數據呈現的需求,經過幾輪挑選,最終選擇了百度的e…

php解決下單、抽獎并發導致的庫存負數的問題

我們知道數據庫處理sql是一條條處理的&#xff0c;假設購買商品的流程是這樣的&#xff1a; sql1:查詢商品庫存 if(庫存數量 > 0) { //生成訂單... sql2:庫存-1 } 當沒有并發時&#xff0c;上面的流程看起來是如此完美&#xff0c;假設同時兩個人下單&#xff0c;而…

在Spring中使用JDBCJobStore配置Quartz

我將開始一些有關Quartz Scheduler內部&#xff0c;提示和技巧的系列文章&#xff0c;這是第0章-如何配置持久性作業存儲。 在Quartz中&#xff0c;您基本上可以在將作業和觸發器存儲在內存中以及在關系數據庫中進行選擇&#xff08; Terracotta是最近添加的混合功能&#xff0…

rlwrap插件,實現sqlplus上下翻頁

oracle在Linux下&#xff0c;sqlplus中不能上下翻&#xff0c;最主要我經常打錯字&#xff01;嘿嘿 01、下載 RPM &#xff1a;http://rpmfind.net/linux/rpm2html/search.php?queryrlwrap tar.gz:https://fossies.org/linux/privat/rlwrap-0.42.tar.gz/ 百度云&#xff1a;h…

ice庫c語言例子,很不多的ICE架構入門學習例子

雖然使用傳統的SOCKET編程&#xff0c;我們可以更為清楚程序的性能&#xff0c;能夠更直接的操控SOCKET的設置&#xff0c;比如發送超時時間&#xff0c;接受BUFFER的大小&#xff0c;以及進行自己的協議加密。但是由于其調試成本較高&#xff0c;且不易于分布式部署ICE 作為一…

程序員的十個層次,你屬于哪一層?(轉)

自西方文藝復興以來&#xff0c;中國在自然科學方面落后西方很多&#xff0c;軟件領域也不例外。當然現在中國的許多程序員們對此可能有許多不同的意見&#xff0c;有些人認為中國的程序員水平遠落后于西方&#xff0c;有些則認為中國的程序員個人能力并不比西方的程序員差&…

操作系統基礎篇

程序運行的4個因素 (1).程序設計語言 (2).編譯系統 (3).操作系統 (4).指令集結構&#xff08;硬件系統&#xff09; 操作系統的定義&#xff1a;操作系統是掌控計算機上所有事情的軟件系統(硬件資源&#xff0c;軟件資源) 操作系統對內存&#xff0c;i/o&#xff0c;cpu&#x…

高效快速中值濾波算法c語言,快速中值濾波及c語言實現.docx

...快速中值濾波及c語言實現學生姓名&#xff1a; 劉 勇 學 號&#xff1a; 6100410218 專業班級&#xff1a; 數媒101【摘要】本文討論了用c語言在微機上實現中值濾波及快速算法&#xff0c;在程序設計的過程中充分考慮到程序運行的時間復雜度和空間復雜度的問題&#xff0e;解…

Arquillian 1.0.0.Final正式發布! 準備使用GlassFish和WebLogic! 殺死所有蟲子!

紅帽公司和JBoss社區今天宣布的1.0.0.Final發布的Arquillian &#xff0c;其屢獲殊榮的建在Java虛擬機&#xff08;JVM&#xff09;運行測試平臺。 Arquillian大大減少了編寫和執行Java中間件集成和功能測試所需的工作。 它甚至使測試工程師能夠解決以前認為無法測試或測試成本…

Jquery選擇器特殊字符問題

場景&#xff1a; $("#" AAA "")&#xff0c;AAA代表某表單ID 當AAA為普通字符串時&#xff0c;ok&#xff1b; 當AAA含有特殊符號時&#xff08;eg:a.b&#xff09;&#xff0c;獲取不到該對象&#xff1b; 原因&#xff1a;特殊符號會進行轉義&#xf…

qq五筆linux,QQ五筆 - 五筆小字典 QQ綁定很實用

九、 智能調頻、空碼檢索、詞序固定在QQ五筆中還有一些小亮點&#xff0c;比如它可以根據“最近輸入”、“輸入次數”對候選詞排序。同時為了加快檢索速度&#xff0c;默認只在常用字庫(GB2312)中檢索&#xff0c;只有出現空碼后才會繼續搜索容量更大的GBK字庫&#xff0c;很好…

DFS:C 小Y的難題(1)

解題心得&#xff1a; 1、在明確使用DFS之后一定要找到遞歸函數的出口、方向&#xff0c;以及遞歸的點&#xff08;在某個情況下開始遞歸&#xff09;(void 也可以return&#xff0c;但是沒有返回值)。遞歸時也要有遞歸的方向&#xff0c;最后都能夠達到遞歸的出口。 2、在DF…

使用ActiveMQ支持Spring Integration路由

正如我在上 一篇 文章中所討論的那樣 &#xff0c;Spring Integration&#xff08;SI&#xff09; 是在Spring Framework之上構建的路由框架 &#xff0c;它使您可以使用經過驗證的企業集成模式來通過消息傳遞解決系統集成問題。 配置好SI并執行路由和中介邏輯后&#xff0c;您…

quagga源碼分析--路由信息處理zebra-rib

對于各個協議生成的路由信息的處理屬于quagga中非常重要的一個功能&#xff0c;如何在內核進行路由增加&#xff0c;更新&#xff0c;刪除是一個復雜的過程。 quagga在thread任務調度中加入了一種工作隊列&#xff0c;work_queue&#xff0c;與內核的工作隊列類似&#xff0c;是…

android 關閉藍牙打電話功能,Android藍牙開發【八】hfp接聽、掛斷電話

繼續研究hfp相關功能。藍牙耳機可以控制手機接聽、拒接、掛斷電話&#xff0c;撥打電話等功能。本文主要分析下起這些操作的大致流程。在系統應用Bluetooth中com_android_bluetooth.cpp提供了多個回調方法&#xff0c;由hardware、協議棧回調過來。藍牙耳機的一些控制命令都會發…

android在listview中放入從sdcard讀取的bitmap

重寫viewbinder public class viewbinder_bookmark implements SimpleAdapter.ViewBinder{Overridepublic boolean setViewValue(View view, Object data, String textRepresentation){if(view instanceof ImageView && data instanceof Bitmap){ImageView imageview(I…

將狀態機模式實現為流處理器

在我的上一個博客中&#xff0c;我說我真的以為某些“四人行”&#xff08;GOF&#xff09;模式已經過時了&#xff0c;如果不是過時的話肯定不受歡迎。 特別是我說過StateMachine不是那么有用&#xff0c;因為您通常會想到另一種更簡單的方式來執行您正在執行的事情&#xff0…