正文之前
昨天晚上階段性的完成了一部分?jǐn)?shù)學(xué)的復(fù)習(xí)(一元積分學(xué)終于搞定了,后面的貌似沒這么難了)督函,所以今天打算擼一擼代碼垛孔,結(jié)合前幾天寫的鏈表實(shí)現(xiàn)線性存儲鹿榜,今天花了個把小時實(shí)現(xiàn)了線性存儲-線性表的實(shí)現(xiàn)(我知道還有太多可以優(yōu)化的地方,但是目前考研只要結(jié)果土匀,不看優(yōu)化子房,后面要的話我會在復(fù)試的準(zhǔn)備中學(xué)習(xí)~~~這算不算立個過初試的Flag?)跪求看完的大神在下面給我貼出優(yōu)化代碼我來學(xué)習(xí)學(xué)習(xí)>驮证杭!
廢話不多說,有疑問的妒御,有意見的解愤,咱們評論區(qū)見:
正文
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5
//注:定義結(jié)構(gòu)體及其指針
typedef struct List
{
int Data[MAXSIZE];
int Last;
} List, *PtrL;
//注:初始化線性表函數(shù),傳入一個表頭乎莉,之后申請內(nèi)存送讲,使之成為靜態(tài)變量
PtrL InitList(PtrL ptrl)
{
List *ptrL;
//注:不知道是MAXSIZE 還是不要奸笤,不過乘上總歸是沒錯的!
ptrL=(List *)malloc(MAXSIZE*sizeof(List));
//注:初始尾指針指向-1哼鬓,第一次復(fù)制就有了Data[0]=Data[Last]监右,方便復(fù)用
ptrL->Last=-1;
//注:講初始化后的線性表傳回
return ptrL;
}
//注:插入數(shù)值函數(shù),先預(yù)判需要插入的地方是否合法
void Insert(PtrL ptrL,int location,int item)
{
if ( ptrL->Last == MAXSIZE-1 )
{ /* 表空間已滿异希,不能插入*/
printf("表空間已滿秸侣,不能插入");
return;
}
if ( location< 0 || location > ptrL->Last+2)
{
/*檢查插入位置的合法性*/
printf("位置不合法");
}
//注:在插入位置之后的所有元素統(tǒng)統(tǒng)向后移位,到了location位置之后宠互,傳入給定值
int i=ptrL->Last;
for (i=ptrL->Last; i >= location; --i)
{
ptrL->Data[i+1]=ptrL->Data[i];
}
ptrL->Data[location]=item;
//注:尾指針要加一味榛,確保一直指向最后的一個數(shù)值
ptrL->Last+=1;
}
//注:遍歷函數(shù),簡單易懂予跌,只是一開始忘了尾指針在第一個數(shù)值傳入的時候等于0搏色,后來想起來了。
void ShowList(PtrL ptrl)
{
for (int i = 0; i < ptrl->Last+1; i++)
{
printf("%d\n 加油叭帷频轿!??\n",ptrl->Data[i]);
}
}
int main()
{
PtrL ptrl;
ptrl=InitList(ptrl);
Insert(ptrl,0,5);
ShowList(ptrl);
Insert(ptrl,1,4);
printf("\n--------------\n| \tfuck \t|\n--------------\n" );
ShowList(ptrl);
return 0;
}
我一開始執(zhí)著于在初始化的過程中直接將整個表給一定程度的賦值,但是后來因?yàn)镕ill()函數(shù)老是給我出岔子烁焙,然后我就把他刪了航邢,從而用Insert()函數(shù)代替。中途又出了通過比較尾指針遍歷的時候骄蝇,因?yàn)槲仓羔槒?1開始無法遍歷的情況膳殷,然后我機(jī)智的在比較的時候給為指針的數(shù)值加1再進(jìn)行比較。好吧九火,我承認(rèn)是因?yàn)槲覍懙牟皇炀氉裕栽趯懙倪^程中遺漏了這些,以后會慢慢變好的岔激。誠摯邀請大家來見證我的成長勒极!
運(yùn)行結(jié)果:
5
加油啊虑鼎!
--------------
| fuck |
--------------
5
加油叭枘洹!4
加油办挪省匾七!Program ended with exit code: 0
那個Fu*k是因?yàn)楫?dāng)時老是出Bug,打了斷點(diǎn)但是還沒有找出來錯誤在哪媒楼,所以給予這個程序深深地草泥馬之沖擊~~
正文之后
我決定了乐尊,初始寫碼用sublime戚丸,而且神奇的發(fā)現(xiàn)很多C的基本語法沒有自動補(bǔ)全划址,這豈不是上天助我扔嵌?考研的時候那破機(jī)器,報錯都成問題夺颤,自動補(bǔ)全做美夢呢痢缎?可以鍛煉我的嚴(yán)謹(jǐn)程度,防止習(xí)慣了自動補(bǔ)全世澜,自動糾錯之后再來寫代碼就是破破爛爛的那種情況了独旷。不過Xcode的糾錯能力很強(qiáng)啊。而且sublime沒有單步運(yùn)行能力寥裂,但是Xcode作為蘋果當(dāng)家開發(fā)工具嵌洼,妥妥的!
再多說兩句封恰,考研可真不是一個簡單的事情麻养,這是比高考更加讓人絕望的東西。因?yàn)楦呖贾澳闳娜舛贾荒転楦呖级鴾?zhǔn)備诺舔,然而在考研之前有太多太多的東西會來阻撓你鳖昌。不僅僅是因?yàn)闆]有人監(jiān)督,沒有人共同作戰(zhàn)低飒,而且也是因?yàn)殡y度驟增许昨,這些東西你可能已經(jīng)忘了兩三年了(更有甚者幾乎等于沒學(xué)過),再撿起來的時候褥赊,就沒有當(dāng)初那么充足的時間來讓你慢吞吞的學(xué)了糕档。而且連考四門并且每門基本上沒有任何關(guān)聯(lián)。光是安排就會讓你手足無措拌喉。昨天下午的時候翼岁,我整個人都萎靡不振,對于微積分的那些東西司光,也是半天想不出來琅坡,只能看答案,我都有點(diǎn)懷疑人生了残家。但是幸虧榆俺,我的阿q精神,還是幫助了我坞淮,在網(wǎng)上看了兩集[信號]之后茴晋,今天又重新開始面對一切。待會兒下午和晚上想把第四章看完回窘,不知道能不能做到诺擅!加油吧總之!啡直!