欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言順序表銷毀函數(shù),c語言退出函數(shù)的語句

數(shù)據(jù)結(jié)構(gòu) c語言版 ——順序表的查找、插入與刪除

#includestdio.h

創(chuàng)新互聯(lián)公司是一家專業(yè)從事成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)公司依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!

#includestdlib.h

#define N 10 //順序表的最大容量

int length=0; //順序表的當(dāng)前元素個(gè)數(shù)

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define LIST_INIT_SIZE 100//線性表存儲(chǔ)的空間初始化分配量

#define LISTINCREAMENT 10 //線性表存儲(chǔ)空間的分配增量

typedef struct LNode//線性單鏈表存儲(chǔ)結(jié)構(gòu)

{

int data;

struct LNode *next;

}LNode,*LinkList;

int CreatList_L(LinkListL)//創(chuàng)建一個(gè)線性鏈表

{

L=(LinkList)malloc(sizeof(LNode));//分配一個(gè)空間給鏈表,作為頭結(jié)點(diǎn)

if(!L) exit(OVERFLOW);

L-next=NULL;

return OK;

}

int DestroyList_L(LinkList L)//銷毀鏈表

{

if(L) free(L);

return OK;

}

int ListInsert_L(LinkListL,int i,int e)//再練表的第i個(gè)元素前插入一個(gè)元素e

{

LinkList p=L;//p指針定位于i-1

LNode *s;

int j=0;

while(pji-1) {p=p-next;j++;}//定位

if(!p||ji-1) return ERROR;//如果i1或大于鏈表元素個(gè)數(shù)+1

s=(LNode*)malloc(sizeof(LNode));

if(!s) exit(OVERFLOW);

s-data=e; //完成插入操作

s-next=p-next;

p-next=s;

return OK;

}

int ListDelet_L(LinkListL,int i,inte)//刪除鏈表L中的第i個(gè)元素,并返回給e;

{

LinkList p=L;

LNode* q;

int j=0;

while(!pji-1) {p=p-next;j++;}//p指針定位于i-1;

if(!p-next||ji-1) return ERROR;

e=p-next-data; //完成刪除操作

q=p-next;

p-next=p-next-next;

free(q);

return OK;

}

int ListTraverse_L(LinkList L,int n)//鏈表的遍歷

{

int i=0;

if(!L)return ERROR;

L=L-next;

while(L)

{

if(L-data==n)return i;

L=L-next;

i++;

}

return FALSE;

}

int InverseSingleList_L(LinkList L)

{

if(!L-next||!L-next-next)//如果鏈表少于2個(gè)Node那么鏈表不需要改變順序

return OK;

LNode *p,*q;

p=L-next; //第一次因?yàn)閜是最后一個(gè)連接所以把p-next設(shè)為空

q=p-next;

p-next=NULL;

p=q;

while(p)

{

q=p-next; //用q去保留p后面一個(gè)Node;

p-next=L-next;

L-next=p;

p=q;

}

return OK;

}

int main()

{

int List[N];

LinkList L;

int ch,exit='N';

do

{

system("CLS");

printf("\t\t********************************************\n");

printf("\t\t* 1.創(chuàng)建一個(gè)順序表 .........(1) *\n");

printf("\t\t* 2.在順序表中查找元表.........(2) *\n");

printf("\t\t* 3.在順序表中插入元表.........(3) *\n");

printf("\t\t* 4.在順序表中刪除元表.........(4) *\n");

printf("\t\t* 5.退出 .........(5) *\n");

printf("\t\t********************************************\n");

printf("\n請(qǐng)選擇操作代碼:");

ch=getchar();

switch(ch)

{

case '1':

printf("\n請(qǐng)輸入十個(gè)元素");

CreatList_L(L);

for(length=0;lengthN;length++)

{

scanf("%d",List[length]);

getchar();

ListInsert_L(L,length+1,List[length]);

}

printf("\n創(chuàng)建成功!");

getchar();

break;

case '2':

scanf("%d",List[0]);

if(ListTraverse_L(L,List[0]))printf("該元素存在該年表的第%d個(gè)位置",ListTraverse_L(L,List[0]));

else printf("不存在該元素");

getchar();

break;

case '3':

scanf("%d%d",length,List[0]);

ListInsert_L(L,length,List[0]);

system("pause");

break;

case '4':

scanf("%d",length);

ListDelet_L(L,length,List[0]);

system("pause");

break;

case '5':

printf("\n您是否真的要退出程序(Y/N):");

getchar();

exit=getchar();

break;

default:

getchar();

printf("\n無效輸入,請(qǐng)重新選擇...:");

getchar();

break;

}

}while(exit!='y'exit!='Y');

}

C語言中 銷毀一個(gè)動(dòng)態(tài)鏈表的函數(shù) 該怎么寫啊??

到底是問鏈表還是數(shù)列呀?

可以這樣寫,傳入的是頭指針

void DeleteList(LIST* head)

{

LIST* tmp;

tmp = head;

while(tmp!=NULL)

{

head = tmp-next;

free(tmp);

tmp = head;

}

}

遞歸算菲數(shù)列的

long fi(int n)

{

if (n==1||n==2) return 1;

return fi(n-1)+fi(n-2);

}

其實(shí)用遞歸算菲波拉契數(shù)列很慢的,很快就棧溢出了。

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)(C語言): 順序表實(shí)驗(yàn)

//線性表函數(shù)操作

#include stdio.h

#include string.h

#define MaxSize 30

#define Error 0

#define True 1

typedef char ElemType;

typedef struct

{

ElemType elem[MaxSize];

int length;

}SqList; /*順序表類型定義*/

void InitList(SqList * L) /*初始化順序表L*/

{

L = (SqList *)malloc(sizeof(SqList));

L - length = 0;

}

void DestroyList( SqList *L ) /*釋放順序表L*/

{

free(L);

}

int ListEmpty( SqList *L ) /*判斷順序表L是否為空表*/

{

return( L - length == 0);

}

int ListLength( SqList *L ) /*返回順序表L的元素個(gè)數(shù)*/

{

return( L - length);

}

void DispList( SqList *L ) /*輸出順序表L*/

{

int i;

if( ListEmpty(L))

return;

for( i = 0; i L - length; i++ )

printf("%c", L - elem[i]);

printf("\n");

}

int GetElem( SqList *L, int i, ElemType e) /*獲取順序表中的第i個(gè)元素*/

{

if( i 1 || i L - elem[i])

return Error;

e = L - elem[i - 1];

return True;

}

int LocateElem( SqList *L, ElemType e) /*在順序表中查找元素e*/

{

int i = 0;

while( i L - length L - elem[i] != e)

i++;

if(i = L - length)

return Error;

else

return i+1;

}

int ListInsert( SqList * L, int i, ElemType e) /*在順序表L中第i個(gè)位置插入元素e*/

{

int j;

if( i 1 || i L - length + 1)

return 0;

i--; /*將順序表位序轉(zhuǎn)化為elem下標(biāo)*/

for( j = L - length; j i; j--) /*將elem[i]及后面元素后移一個(gè)位置*/

L - elem[j] = L - elem[j - 1];

L - elem[i] = e;

L - length++; /*順序表長度增1*/

return True;

}

int ListDelete( SqList * L, int i, ElemType e) /*順序表L中刪除第i個(gè)元素*/

{

int j;

if( i 1 || i L - length)

return Error;

i--; /*將順序表位序轉(zhuǎn)化為elem下標(biāo)*/

e = L - elem[i];

for(j = i; j L - length - i; j++)

L - elem[j] = L - elem[j + 1];

L - length--; /*順序表長度減1*/

return True;

}

void main()

{

SqList *L;

ElemType e;

printf("(1)初始化順序表L\n");

InitList(L);

printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");

ListInsert(L, 1, 'a');

ListInsert(L, 2, 'b');

ListInsert(L, 3, 'c');

ListInsert(L, 4, 'd');

ListInsert(L, 5, 'e');

printf("(3)輸出順序表L:");

DispList(L);

printf("(4)順序表L長度 = %d\n", ListLength(L));

printf("(5)順序表L為%s\n", (ListEmpty(L) ?"空" :"非空"));

GetElem(L, 3, e);

printf("(6)順序表L的第3個(gè)元素 = %c\n", e);

printf("(7)元素a的位置 = %d\n", LocateElem(L,'a'));

printf("(8)在第4個(gè)元素位置上插入f元素\n");

ListInsert(L, 4, 'f');

printf("(9)輸出新的順序表L:");

DispList(L);

printf("(10)刪除L的第3個(gè)元素\n");

ListDelete(L, 3, e);

printf("(11)輸出新的順序表L:");

DispList(L);

printf("(12)釋放順序表L\n");

DestroyList(L);

}

C語言線性順序表的插入和刪除

#include"stdio.h"

#include"malloc.h"

#include"iostream.h"

typedef int status;

typedef int elementype;

#define INITSIZE 100

#define INCREMENT 2

struct sqlist

{

elementype *elem;

int length;

int listsize;

};

//建立鏈表,并排列數(shù)據(jù)

status listinit(sqlist l)

{

int i=0,x,j,t;

l.elem=(elementype *)malloc(INITSIZE*sizeof(elementype));

if(!l.elem)

{

cout"建表失敗"endl;

return 0;

}

l.length=0;

l.listsize=INITSIZE;

while(1)

{

cout"請(qǐng)輸入數(shù)據(jù)(輸入0時(shí)結(jié)束):";

cinx;

if(x==0) break;

l.elem[i]=x;

++l.length;

i++;

}

for(i=0;il.length-1;i++)

for(j=0;jl.length-i-1;j++)

if(l.elem[j]l.elem[j+1])

{

t=l.elem[j+1];

l.elem[j+1]=l.elem[j];

l.elem[j]=t;

}

cout"排序成功"endl;

return 1;

}

//插入數(shù)據(jù)

status listinsert(sqlist l,int i,elementype e)

{

elementype *p,*q,*newbase;

if(i1||il.length)

{

cout"i輸入錯(cuò)誤"endl;

return 0;

}

if(l.length=l.listsize)

{

newbase=(elementype*)realloc(l.elem,(l.listsize+INCREMENT)*sizeof(elementype));

if(!newbase)

{

cout"申請(qǐng)空間失敗"endl;

return 0;

}

l.elem=newbase;

l.listsize=l.listsize+INCREMENT;

}

q=(l.elem[i-1]);

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

{

*(p+1)=*p;

}

*q=e;

++l.length;

cout"插入成功";

return 1;

}

//刪除數(shù)據(jù)

status listdelete(sqlist l,int i,elementype e)

{

elementype *p,*q;

if(i1||il.length)

{

cout"i輸入錯(cuò)誤"endl;

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;

cout"刪除成功"endl;

free(e);

return 1;

}

//刪除重復(fù)的數(shù)據(jù)

status listdeleterepeat(sqlist l)

{

int i,j;

elementype *p,*q,e;

for(i=0;il.length-1;i++)

for(j=i+1;jl.length-1;j++)

if(l.elem[i]==l.elem[j])

{

p=(l.elem[j]);

e=*p;

q=l.elem+l.length-1;

for(++p;p=q;++p)

{

*(p-1)=*p;

}

--l.length;

free(e);

j--;

}

return 1;

}

//輸出順序表數(shù)據(jù)

status displaylist(sqlist l)

{

int i;

cout"順序表的數(shù)據(jù)為:"endl;

for(i=0;il.length;i++)

{

coutl.elem[i]" ";

}

coutendl;

return 1;

}

//查找數(shù)據(jù)

status locatelem(sqlist l,int x)

{

elementype *p;

int i=1;

p=l.elem;

while(il.length(*p++)!=x)

i++;

coutiendl;

return 1;

}

//清空列表

void listclear(sqlist l)

{

l.length=0;

}

//銷毀順序表

void listdestroy(sqlist l)

{

if(l.elem)

free(l.elem);

}

//求順序表長度

status listlength(sqlist l)

{

cout"順序表的長度為:"l.lengthendl;

return 1;

}

int main()

{

sqlist l;

int a,i,x;

elementype e;

cout"*************************************************"endl;

cout"* 順序表的表示和實(shí)現(xiàn) *"endl;

cout"*************************************************"endl;

do{

cout"*************************************************"endl;

cout"* 菜單 *"endl;

cout"* 1.建立順序表 *"endl;

cout"* 2.插入數(shù)據(jù) *"endl;

cout"* 3.刪除數(shù)據(jù) *"endl;

cout"* 4.刪除重復(fù)數(shù)據(jù) *"endl;

cout"* 5.清空數(shù)據(jù) *"endl;

cout"* 6.查找數(shù)據(jù) *"endl;

cout"* 7.順序表的長度 *"endl;

cout"* 8.顯示順序表 *"endl;

cout"* 0.退出順序表 *"endl;

cout"*************************************************"endl;

cout"輸入你的選擇:";

cina;

switch(a)

{

case 1: listinit(l);

displaylist(l);

break;

case 2: cout"請(qǐng)輸入要插入數(shù)據(jù)的位置:";

cini;

cout"請(qǐng)輸入要插入的數(shù)據(jù)元素:";

cine;

listinsert(l,i,e);

displaylist(l);

break;

case 3: cout"請(qǐng)輸入要?jiǎng)h除的數(shù)據(jù)的位置:";

cini;

listdelete(l,i,e);

displaylist(l);

break;

case 4: cout"刪除前的數(shù)據(jù)為:";

displaylist(l);

listdeleterepeat(l);

cout"刪除后的數(shù)據(jù)為:";

displaylist(l);

break;

case 5: cout"清空前為:";

displaylist(l);

cout"清空后為:";

listclear(l);

displaylist(l);

break;

case 6: cout"輸入你要查找的數(shù)據(jù):";

cinx;

cout"你要查找的數(shù)據(jù)的位置為:";

locatelem(l,x);

displaylist(l);

break;

case 7: cout"順序表的長度為:";

listlength(l);

break;

case 8: displaylist(l);

break;

default: break;

}

}while(a!=0);

return 1;

}

c語言銷毀棧的函數(shù)。大家看看寫的對(duì)不?

這兩個(gè)函數(shù)一個(gè)是銷毀棧DestroyStack,一個(gè)是清空棧ClearStack

銷毀是把整個(gè)棧都釋放掉,清空只是把棧里元素清除。

因?yàn)槟愕臈T厥莍nt型基本變量,所以棧元素內(nèi)容是直接存放在棧空間的,并沒有另外申請(qǐng)內(nèi)存保存棧元素,所以在從棧里移除棧元素時(shí),不需要調(diào)用free函數(shù)。

實(shí)際上你的DestroyStack可以很直接的如下:

int DestroyStack(stack s)

{

free(s.base); //釋放棧空間,這里假設(shè)s.base是個(gè)指針而不是數(shù)組

//如果s結(jié)構(gòu)也是動(dòng)態(tài)申請(qǐng)的,也需要執(zhí)行free(s);

}

至于ClearStack,書上寫的是沒問題的,清空棧,不是要釋放棧空間,而是把棧里的元素都清除,最直接的做法就是把棧頂指針指向棧底指針,棧頂和棧底指針相同時(shí),就表示棧內(nèi)無元素,棧空間還是保留,下次可以繼續(xù)把棧元素壓棧和彈棧。

數(shù)據(jù)結(jié)構(gòu)(C語言) 銷毀順序表的函數(shù)體是什么 急!!!!!

void?destroyLink(Node?*head)

{

if(!head)

return;

Node*?pTemp=head-pNext;

delete?head;

destroyLink(pTemp);

}

名稱欄目:c語言順序表銷毀函數(shù),c語言退出函數(shù)的語句
轉(zhuǎn)載注明:http://chinadenli.net/article36/dsgejsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航手機(jī)網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站小程序開發(fā)網(wǎng)站改版ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司