真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言中l(wèi)ist函數(shù) C語言中l(wèi)ist

C語言中的list是指什么?求一個簡單的list代碼

C語言中沒有l(wèi)ist

公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站建設、外貿(mào)網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出古縣免費做網(wǎng)站回饋大家。

list是C++中的一個類

具體使用可以從網(wǎng)上查一下,有很多應用

C語言,outlist函數(shù)的意義是什么?多謝各位

函數(shù)功能:該函數(shù)可以獲得與系統(tǒng)中輸入點的當前集相對應的鍵盤布局句柄。該函數(shù)將句柄拷貝到指定的緩沖區(qū)中。

函數(shù)原型:UINT

GetKeyboardLayoutList(int

nBuff,HKL

FAR

*IpList)

參數(shù):

nBuff:指定緩沖區(qū)中可以存放的最大句柄數(shù)目。

Iplist:緩沖區(qū)指針,緩沖區(qū)中存放著鍵盤布局句柄數(shù)組。

返回值:若函數(shù)調用成功,則返回值為拷貝到緩沖區(qū)的鍵盤布局句柄的數(shù)目,或者,若nBuff為0,則運回值為接受所有當前鍵盤布局的緩沖區(qū)中的大?。ㄒ詳?shù)組成員為單位)。若函數(shù)調用失敗,返回值為0。若想獲得更多錯誤信息,可調用GetLastError函數(shù)。

誰能用c語言寫list的方法 insert delete locate length

#include time.h

#include stdio.h

#define NULL -2

#define ERROR -1

#define OK 1

#define TRUE 2

#define FALSE 3

#define Boolen int

#define Status int

#define LIST_INIT_SIZE 3

#define LIST_INCREMENT 2

#define NAME_LEN 13

#define DES_LEN 30

char ErrDescription[DES_LEN];

typedef struct{

int NO;

char Name[NAME_LEN];

enum{male,female} Sex;

int Age;

char Tel[15];

char Inserttime[64];

}ElemType,*ElemPointer;

typedef struct{

ElemPointer base; //基址

int length; //表長

int listsize; //內(nèi)存占用

int elemcount; //記錄數(shù)

}SqList,*SqPointer;

int ErrorEXP(int i)

{

switch(i)

{ case 1: strcpy(ErrDescription,"InitList::(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)) 空間申請失敗");break;

case 2: strcpy(ErrDescription,"IncreaseList::(ElemType *)realloc(L-base,(L-length + LIST_INCREMENT) * sizeof(ElemType)) 空間申請失敗");break;

case 3: strcpy(ErrDescription,"if(!L-base) return Error; SqList不存在");break;

case 4: strcpy(ErrDescription,"GetElem:: i 越界");break;

case 5: strcpy(ErrDescription,"ListInsert:: i 越界");break;

case 6: strcpy(ErrDescription,"ListInsert:: CALL IncreaseList(L)==ERROR return Error 鄰接空間申請失敗,由ListInsert返回");break;

case 7: strcpy(ErrDescription,"ListDelete:: i 越界");break;

case 8: strcpy(ErrDescription,"KeyInList:: i 越界");break;

case 9: strcpy(ErrDescription,"KeyInList:: CALL ListInsert(L,i,temp)==ERROR return Error 鄰接空間申請失敗,由KeyInList返回");break;

case 10: strcpy(ErrDescription,"ScanfList:: CALL KeyInList(L,i++)==ERROR return Error");break;

}

puts("!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n");

puts(ErrDescription);

puts("\n!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n");

return ERROR;

}

Status InitList(SqPointer L)

{

L-base = 0; //不可不要!!! 去掉后即使(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType))失敗,系統(tǒng)也會認為正常

L-base = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));

if(!L-base) return ErrorEXP(1); //空間申請失敗,返回

L-length = LIST_INIT_SIZE;

L-listsize = L-length * sizeof(ElemType);

L-elemcount = 0;

return OK;

}

Status IncreaseList(SqPointer L)

{

ElemPointer newbase;

newbase = (ElemType *)realloc(L-base,(L-length + LIST_INCREMENT) * sizeof(ElemType));

if(!newbase) return ErrorEXP(2);

L-base = newbase;

L-length += LIST_INCREMENT;

L-listsize = L-length * sizeof(ElemType);

return OK;

}

Status DestroyList(SqPointer L)

{

if(!L-base) return ErrorEXP(3); //L不存在,返回

free(L-base);

L-length = NULL;

L-listsize = NULL;

L-elemcount = NULL;

return OK;

}

Status ClearList(SqPointer L)

{

if(!L-base) return ErrorEXP(3); //L不存在,返回

L-elemcount = 0;

return OK;

}

Boolen ListEmpty(SqPointer L)

{

if(!L-base) return ErrorEXP(3); //L不存在,返回

if(L-elemcount == 0)

return TRUE;

else

return FALSE;

}

int ListElemCount(SqPointer L)

{

if(!L-base) return ErrorEXP(3); //L不存在,返回

return L-elemcount;

}

Status GetElem(SqPointer L,int i,ElemType *ret) //調用此函數(shù)需將ret指向main函數(shù)域某一ElemType變量

{

if(!L-base) return ErrorEXP(3); //L不存在,返回

if(i L-elemcount) return ErrorEXP(4); //i越界,返回

*ret = L-base[i-1]; //i 從1開始 此種方法在main中改變*ret會直接更改鏈表中數(shù)據(jù)

return OK;

}

//重大發(fā)現(xiàn) 指針型 temp-base 普通型L.base

int LocateElem(SqPointer L,char Locatename[]) //返回的i從1開始

{

int i=0;

ElemType *temp;

if(!L-base) return ErrorEXP(3); //L不存在,返回

while(iL-elemcount)

{

temp=(L-base[i]); //改為temp=L-base[i++];并去除下面的i++; ??

if(strcmp(temp-Name,Locatename) == 0) return i+1; //不能用temp-Name==locatename來試圖比較字符串

i++;

}

return 0;

}

Status ListInsert(SqPointer L,int i,ElemType newelem) //插入位置1=i=elemcount+1

{

ElemPointer newbase;

ElemType *temp,*flag;

if(!L-base) return ErrorEXP(3); //L不存在,返回

if(i1 || iL-elemcount + 1) return ErrorEXP(5);

if(L-elemcount == L-length)

if(IncreaseList(L)==ERROR) return ErrorEXP(6);

flag=(L-base[i-1]); //插入位置

for(temp=(L-base[L-elemcount-1]);temp=flag;temp--)

*(temp+1)=*temp;

*flag=newelem;

L-elemcount++;

return OK;

}

Status ListDelete(SqPointer L,int i,ElemType *ret) //調用此函數(shù)需將ret指向main函數(shù)域某一ElemType變量

{

ElemType *temp;

if(!L-base) return ErrorEXP(3); //L不存在,返回

if(i1 || iL-elemcount) return ErrorEXP(7);

*ret=L-base[i-1]; //刪除位置,這里先返回該值

for(temp=(L-base[i]);temp=(L-base[L-elemcount-1]);temp++)

*(temp-1)=*temp;

L-elemcount--;

return OK;

}

Status KeyInList(SqPointer L,int i)

{

ElemType temp;

time_t t;

char tmp[64];

char S;

if(!L-base) return ErrorEXP(3); //L不存在,返回

if(i1 || iL-elemcount + 1) return ErrorEXP(8);

printf("正在輸入第%d個元素的值:",i);

printf("\n編號:(int)\n");

scanf("%d",temp.NO);

printf("\n姓名:(char *)\n");

scanf("%s",temp.Name);

printf("\n性別:(m or f)\n");

do{

S=getch();

if(S=='m')

temp.Sex=male;

else if(S=='f')

temp.Sex=female;

else

puts("Key in 'm' or 'f'.\n");

}while(S!='m' S!='f');

putchar(S);

printf("\n年齡:(int)\n");

scanf("%d",temp.Age);

printf("\n電話:(char *)\n");

scanf("%s",temp.Tel);

printf("\n記錄時間:\n");

t=time(0);

strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(t));

puts(tmp);

strcpy(temp.Inserttime,tmp);

if(ListInsert(L,i,temp)==OK)

return OK;

else

return ErrorEXP(9);

}

ElemType ScanfElem()

{

ElemType temp;

time_t t;

char tmp[64];

char S;

printf("正在錄入元素:");

printf("\n編號:(int)\n");

scanf("%d",temp.NO);

printf("\n姓名:(char *)\n");

scanf("%s",temp.Name);

printf("\n性別:(m or f)\n");

do{

S=getch();

if(S=='m')

temp.Sex=male;

else if(S=='f')

temp.Sex=female;

else

puts("Key in 'm' or 'f'.\n");

}while(S!='m' S!='f');

putchar(S);

printf("\n年齡:(int)\n");

scanf("%d",temp.Age);

printf("\n電話:(char *)\n");

scanf("%s",temp.Tel);

printf("\n記錄時間:\n");

t=time(0);

strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(t));

puts(tmp);

strcpy(temp.Inserttime,tmp);

return temp;

}

Status ScanfList(SqPointer L,int i)

{

char p='c';

while(putchar('\n'),p=='c'||p=='C')

{ p='\0';

if(KeyInList(L,i++)==ERROR) return ErrorEXP(10);

printf("\nPress ESC key to exit or 'C' to continue...");

while(p!='c' p!='C' (int)p!=27)

p=getch();

}

return OK;

}

Status PrintListProperty(SqPointer L)

{

puts("SqList L Property:");

if(!L-base)

{ puts("鏈表不存在!");

return OK;}

else

puts("鏈表已初始化...\n");

printf("%d/%d BASE=%d,MemoryStatus=%d\n",L-elemcount,L-length,L-base,L-listsize);

return OK;

}

Status PrintOnScreen(SqPointer L)

{

int i;

char Stmp[7],t;

if(!L-base) return ErrorEXP(3); //L不存在,返回

puts("Push 'C' shell CLS or other key to skip.");

t=getch();

if(t=='c' || t=='C')

system("cls");

puts("數(shù)據(jù)表打印:");

for(i=0;i=L-elemcount-1;i++)

{ printf("\nElem %d st:\n",i+1);

if(L-base[i].Sex == male)

strcpy(Stmp,"male");

else if(L-base[i].Sex == female)

strcpy(Stmp,"female");

else

strcpy(Stmp,"Unknow");

printf("NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n",L-base[i].NO,L-base[i].Name,Stmp,L-base[i].Age,L-base[i].Tel,L-base[i].Inserttime);

}

return OK;

}

Status PrintElem(ElemPointer elem)

{

char Stmp[7];

printf("\nPrintElem:\n");

if(elem-Sex == male)

strcpy(Stmp,"male");

else if(elem-Sex == female)

strcpy(Stmp,"female");

else

strcpy(Stmp,"Unknow");

printf("NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n",elem-NO,elem-Name,Stmp,elem-Age,elem-Tel,elem-Inserttime);

return OK;

}

void main() //把以上所有函數(shù)都串了起來

{

SqList TheList;

SqPointer ListP;

ElemType mylistelem,*elemtemp;

ElemPointer mylist;

int i;

char nameT[20];

elemtemp=mylistelem; //*ret

ListP=TheList;

if(InitList(ListP)==OK) puts("InitList(TheList)==OK");

PrintListProperty(ListP);

if(ListEmpty(ListP)==TRUE) puts("ListEmpty==True");

else puts("ListEmpty==False");

ScanfList(ListP,1);

PrintListProperty(ListP);

PrintOnScreen(ListP);

printf("ListElemCount return %d.",ListElemCount(ListP));

puts("\nGetElem index? ");

scanf("%d",i);

if(GetElem(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts("\nLocateElem name? ");

scanf("%s",nameT);

printf("LocateElem return %d.",LocateElem(ListP,nameT));

puts("\nListDelete index? ");

scanf("%d",i);

if(ListDelete(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts("\nListInsert index? ");

scanf("%d",i);

puts("\nListInsert NEWELEM? ");

ListInsert(ListP,i,ScanfElem());

PrintListProperty(ListP);

PrintOnScreen(ListP);

if(ClearList(ListP)==OK) puts("ClearList==OK");

if(ListEmpty(ListP)==TRUE) puts("ListEmpty==True");

if(DestroyList(ListP)==OK) puts("DestroyList==OK");

getch();

}

/* 函數(shù)列表

類型 名稱 參數(shù) 說明

int ErrorEXP (int i) 錯誤描述符

Status InitList (SqPointer L) 初始化SqPointer L... 通過L返回base

Status IncreaseList (SqPointer L) L當前滿時,繼續(xù)申請空間

Status DestroyList (SqPointer L) 銷毀L

Status ClearList (SqPointer L) 把L置為空表

Boolen ListEmpty (SqPointer L) 判斷L是否為空表,是則返回TRUE

int ListElemCount (SqPointer L) 返回當前L中記錄的元素個數(shù)

Status GetElem (SqPointer L,int i,ElemType *ret) 通過*ret返回i號元素

int LocateElem (SqPointer L,char Locatename[]) 順序查找表,根據(jù)name字段,返回首個匹配元素的i,無則返回0

Status ListInsert (SqPointer L,int i,ElemType newelem) 在L中的i號位置插入newelem元素

Status ListDelete (SqPointer L,int i,ElemType *ret) 刪除L中第i號元素,并用*ret返回該元素

Status KeyInList (SqPointer L,int i) 從鍵盤輸入單個元素并插入到i號位置

ElemType ScanfElem () 從鍵盤輸入單個元素返回一個ElemType類型的節(jié)點

Status ScanfList (SqPointer L,int i) 從i號開始遞增順序錄入元素到L,直到按'ESC'

Status PrintListProperty(SqPointer L) 打印L的屬性,打印格式為(已用空間/已申請空間 基址 內(nèi)存占用)

Status PrintOnScreen (SqPointer L) 打印整張L表到屏幕

Status PrintElem (ElemPointer elem) 打印單個ElemType類型的元素

時間倉促,所以亂了些,書上2章開頭 動態(tài)線性的順序表 的基本操作幾乎都寫了

不知你說的是不是這個,mian函數(shù)比較亂,只是把所有的基本操作都串了起來,你

可以根據(jù)情況改改主函數(shù)的調用過程,就會比較清楚是怎么實現(xiàn)的了。你可以按F10

進行單部跟蹤,F(xiàn)11可以進入調用過程,一步一步跟著程序走一遍就好了。

關于動態(tài)鏈表的我之前寫過一個,也好象給你看過,這里再附上一起發(fā)過去。文件LinkList.c

只實現(xiàn)了構造鏈表,并打印出來的功能。

*/

C語言中creatlist的用法

1、createlist不是庫函數(shù),一般是數(shù)據(jù)結構中實現(xiàn)新建一個鏈表的自定義函數(shù)。因此沒有什么用法好說的,關鍵是看自己怎么定義。

2、例程:

NODE?*creatlist(int?a[])

{?NODE?*h,*p,*q;int?i;

h=(NODE?*)malloc(sizeof(NODE));

h-next=NULL;

for(i=0;iN;i++)

{q=(NODE?*)malloc(sizeof(NODE));

q-data=a[i];

q-next=NULL;

if(h-next==NULL)?h-next=p=q;

else?{p-next=q;p=q;}?????}

return?h;

}

如何用C語言或C++實現(xiàn)一個List類?

C語言沒有類的概念。C++有現(xiàn)成的List類, #includelist即可。

如果要自己實現(xiàn)可以參考C++數(shù)據(jù)結構的書籍,是最基本的練習。

這里實現(xiàn)一個簡單的例程,請參考:

#include?iostream

#include?fstream

#include?stdlib.h

#include?string.h

using?namespace?std;

#includestdio.h

#includestring

#include?"math.h"

templateclass?T?class?List{

public:

List()??//構造函數(shù)

{

pFirst?=?NULL;

}

void?Add(T?t)??//在Link表頭添加新結點

{

if(pFirst?==?NULL)

{

pFirst?=?new?Node;

*(pFirst-pT)?=?t;

}

else

{

Node*?pNewNode?=?new?Node;

*(pNewNode-pT)?=?t;

pNewNode-pNext?=?pFirst;

pFirst?=?pNewNode;

}

}

void?Remove(T?t)?//在Link中刪除含有特定值的元素

{

Node*?pNode?=?pFirst;

if(*(pNode-pT)?==?t)

{

pFirst?=?pFirst-pNext;

delete?pNode;

return;

}

while(pNode?!=?NULL)

{

Node*?pNextNode?=?pNode-pNext;

if(pNextNode!=NULL)

{

if(*(pNextNode-pT)?==?t)

{

pNode-pNext?=?pNextNode-pNext;

delete?pNextNode;

return;

}

}

else

return;//沒有相同的

pNode?=?pNode-pNext;

}

}

T*?Find(T?t)??//查找含有特定值的結點

{

Node*?pNode?=?pFirst;

while(pNode?!=?NULL)

{

if(*(pNode-pT)?==?t)

{

return?pNode-pT;

}

pNode?=?pNode-pNext;

}

return?NULL;

}

void?PrintList()??//?打印輸出整個鏈表

{

if(pFirst?==?NULL)

{

cout"列表為空列表!"endl;

return;

}

Node*?pNode?=?pFirst;

while(pNode?!=?NULL)

{

cout*(pNode-pT)endl;

pNode?=?pNode-pNext;

}

}

~List()

{

Node*?pNode?=?pFirst;

while(pNode?!=?NULL)

{

Node*?pNextNode?=?pNode-pNext;

delete?pNode;

pNode?=?pNextNode;

}

}

protected:

struct?Node{

Node*?pNext;

T*?pT;

Node()

{

pNext?=?NULL;

pT?=?new?T;

}

~Node()

{

delete?pT;

}

};

Node?*pFirst;????????//鏈首結點指針

};

class?Student

{

public:

char?id[20];????//學號

char?name[20];????//姓名

int?age;????//年齡

Student()

{

}

~Student()

{

}

Student(const?char*?pid,?const?char*?pname,?int?_age)

{

strcpy(id,?pid);

strcpy(name,?pname);

age?=?_age;

}

bool?operator==(const?Student?stu)

{

return?strcmp(id,?stu.id)?==?0??strcmp(id,?stu.id)?==?0??age==stu.age;

}

Student?operator=(const?Student?stu)

{

strcpy(id,?stu.id);

strcpy(name,?stu.name);

age?=?stu.age;

}

friend?ostream?operator?(ostream?out,const?Student?stu);

};

ostream??operator?(ostream?out,const?Student?stu)

{

out"id:"stu.id"\tname:"stu.name"\tage:"stu.ageendl;

}

int?main()

{

ListStudent?stuList;

cout"添加學生前:"endl;

stuList.PrintList();

Student?stu1("1",?"張三",?18);

Student?stu2("2",?"李四",?18);

Student?stu3("3",?"王五",?18);

Student?stu4("4",?"至尊寶",?18);

Student?stu5("5",?"豬八戒",?18);

Student?stu6("6",?"唐僧",?18);

Student?stu7("7",?"沙和尚",?18);

Student?stu8("8",?"觀音",?18);

stuList.Add(stu1);

stuList.Add(stu2);

stuList.Add(stu3);

stuList.Add(stu4);

stuList.Add(stu5);

stuList.Add(stu6);

stuList.Add(stu7);

stuList.Add(stu8);

cout"添加學生后:"endl;

stuList.PrintList();

Student?stu11("1",?"張三",?18);

Student*?pStu?=?stuList.Find(stu11);

cout"查找到的同學是:"*pStu;

stuList.Remove(stu11);

cout"\n\n刪除第一個后:"endl;

stuList.PrintList();

return?0;

}


分享名稱:c語言中l(wèi)ist函數(shù) C語言中l(wèi)ist
網(wǎng)站URL:http://weahome.cn/article/hheeii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部